@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.mjs CHANGED
@@ -8384,29 +8384,6 @@ var GymIcon = /* @__PURE__ */ jsxs("svg", { width: "16", height: "16", viewBox:
8384
8384
  /* @__PURE__ */ jsx("path", { d: "M10 6h4" }),
8385
8385
  /* @__PURE__ */ jsx("path", { d: "M10 18h4" })
8386
8386
  ] });
8387
- var ShieldIcon = /* @__PURE__ */ jsx("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "#D4AF37", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsx("path", { d: "M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z" }) });
8388
- var LockIcon = /* @__PURE__ */ jsxs("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "#D4AF37", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: [
8389
- /* @__PURE__ */ jsx("rect", { x: "3", y: "11", width: "18", height: "11", rx: "2", ry: "2" }),
8390
- /* @__PURE__ */ jsx("path", { d: "M7 11V7a5 5 0 0 1 10 0v4" })
8391
- ] });
8392
- var FileCheckIcon = /* @__PURE__ */ jsxs("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "#D4AF37", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: [
8393
- /* @__PURE__ */ jsx("path", { d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" }),
8394
- /* @__PURE__ */ jsx("polyline", { points: "14 2 14 8 20 8" }),
8395
- /* @__PURE__ */ jsx("path", { d: "M9 15l2 2 4-4" })
8396
- ] });
8397
- var BuildingIcon = /* @__PURE__ */ jsxs("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "#D4AF37", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: [
8398
- /* @__PURE__ */ jsx("rect", { x: "4", y: "2", width: "16", height: "20", rx: "2", ry: "2" }),
8399
- /* @__PURE__ */ jsx("path", { d: "M9 22v-4h6v4" }),
8400
- /* @__PURE__ */ jsx("path", { d: "M8 6h.01" }),
8401
- /* @__PURE__ */ jsx("path", { d: "M16 6h.01" }),
8402
- /* @__PURE__ */ jsx("path", { d: "M12 6h.01" }),
8403
- /* @__PURE__ */ jsx("path", { d: "M12 10h.01" }),
8404
- /* @__PURE__ */ jsx("path", { d: "M12 14h.01" }),
8405
- /* @__PURE__ */ jsx("path", { d: "M16 10h.01" }),
8406
- /* @__PURE__ */ jsx("path", { d: "M16 14h.01" }),
8407
- /* @__PURE__ */ jsx("path", { d: "M8 10h.01" }),
8408
- /* @__PURE__ */ jsx("path", { d: "M8 14h.01" })
8409
- ] });
8410
8387
  var DEFAULT_FEATURES = [
8411
8388
  { icon: BedIcon, value: "\u2014", label: "Beds" },
8412
8389
  { icon: BathIcon, value: "\u2014", label: "Baths" },
@@ -8424,12 +8401,6 @@ var DEFAULT_PROPERTY_INFO = [
8424
8401
  { label: "Status", value: "N/A" }
8425
8402
  ];
8426
8403
  var DEFAULT_DESCRIPTION = "Property description not available.";
8427
- var TOKENHOLDER_PROTECTIONS = [
8428
- { icon: ShieldIcon, title: "SPV Structure", desc: "Each property is held in a dedicated Special Purpose Vehicle, isolating investor assets from platform risk." },
8429
- { icon: LockIcon, title: "Smart Contract Audit", desc: "All token contracts are audited by independent security firms before deployment." },
8430
- { icon: FileCheckIcon, title: "Title Insurance", desc: "Full title insurance coverage protects token holders against title defects and encumbrances." },
8431
- { icon: BuildingIcon, title: "Regulated Exchange", desc: "Trading occurs on a regulated marketplace with KYC/AML compliance and investor protections." }
8432
- ];
8433
8404
  function truncateAddress(addr) {
8434
8405
  if (addr.length <= 12) return addr;
8435
8406
  return `${addr.slice(0, 6)}...${addr.slice(-4)}`;
@@ -8567,7 +8538,6 @@ function PropertyOverview({
8567
8538
  { label: "Last Valuation", value: isLoading && resolvedValuation == null ? loadingSkeleton : resolvedValuation ? resolvedValuation >= 1e6 ? `$${(resolvedValuation / 1e6).toFixed(2)}M` : `$${resolvedValuation.toLocaleString()}` : "\u2014" },
8568
8539
  { label: "Number of Offers", value: "\u2014" },
8569
8540
  { label: "Growth (Past 5 Years)", value: "\u2014" },
8570
- { label: "Security Interest in Asset", value: "Yes, secured to Land Registry" },
8571
8541
  { label: "Last Dividend", value: isLoading && monthlyDivPerShare == null ? loadingSkeleton : monthlyDivPerShare != null ? `${(monthlyDivPerShare * 100).toFixed(1)} cents` : "\u2014" },
8572
8542
  { label: "Upcoming Dividend", value: (() => {
8573
8543
  const now = /* @__PURE__ */ new Date();
@@ -8730,12 +8700,59 @@ function PropertyOverview({
8730
8700
  ] })
8731
8701
  ] }),
8732
8702
  /* @__PURE__ */ jsxs(Section, { children: [
8733
- /* @__PURE__ */ jsx(SectionHeader, { children: "Tokenholder Protections" }),
8734
- /* @__PURE__ */ jsx(ProtectionsGrid, { children: TOKENHOLDER_PROTECTIONS.map((p) => /* @__PURE__ */ jsxs(ProtectionCard, { children: [
8735
- /* @__PURE__ */ jsx(ProtectionIconWrap, { children: p.icon }),
8736
- /* @__PURE__ */ jsx(ProtectionTitle, { children: p.title }),
8737
- /* @__PURE__ */ jsx(ProtectionDesc, { children: p.desc })
8738
- ] }, p.title)) })
8703
+ /* @__PURE__ */ jsx(SectionHeader, { children: "Tokenholder Security" }),
8704
+ /* @__PURE__ */ jsxs(SecurityTable, { children: [
8705
+ /* @__PURE__ */ jsxs(SecurityRow, { children: [
8706
+ /* @__PURE__ */ jsxs(SecurityRowLeft, { children: [
8707
+ /* @__PURE__ */ jsx(SecurityRowLabel, { children: "Legal Structuring" }),
8708
+ /* @__PURE__ */ jsx(SecurityRowLogo, { children: /* @__PURE__ */ jsx("img", { src: "/Baker_McKenzie.png", alt: "Baker McKenzie", style: { height: "22px", filter: "brightness(0) invert(1)", opacity: 0.8 } }) })
8709
+ ] }),
8710
+ /* @__PURE__ */ jsx(SecurityRowRight, { children: /* @__PURE__ */ jsxs(SecurityRowLinks, { children: [
8711
+ /* @__PURE__ */ jsx(SecurityDocLink, { href: "#documents", children: "Legal Opinion" }),
8712
+ /* @__PURE__ */ jsx(SecurityDocLink, { href: "#documents", children: "Structuring Memo" })
8713
+ ] }) })
8714
+ ] }),
8715
+ /* @__PURE__ */ jsxs(SecurityRow, { children: [
8716
+ /* @__PURE__ */ jsxs(SecurityRowLeft, { children: [
8717
+ /* @__PURE__ */ jsx(SecurityRowLabel, { children: "Security Interest in Asset" }),
8718
+ /* @__PURE__ */ jsxs(SecurityRowValue, { children: [
8719
+ /* @__PURE__ */ jsx(SecurityStatusDot, {}),
8720
+ "Secured \u2014 NSW Land Registry"
8721
+ ] })
8722
+ ] }),
8723
+ /* @__PURE__ */ jsx(SecurityRowRight, { children: /* @__PURE__ */ jsxs(SecurityRowLinks, { children: [
8724
+ /* @__PURE__ */ jsx(SecurityDocLink, { href: "#documents", children: "Mortgage Agreement" }),
8725
+ /* @__PURE__ */ jsx(SecurityDocLink, { href: "#documents", children: "Registry Filing" })
8726
+ ] }) })
8727
+ ] }),
8728
+ /* @__PURE__ */ jsxs(SecurityRow, { children: [
8729
+ /* @__PURE__ */ jsxs(SecurityRowLeft, { children: [
8730
+ /* @__PURE__ */ jsx(SecurityRowLabel, { children: "Bankruptcy Remote" }),
8731
+ /* @__PURE__ */ jsxs(SecurityRowValue, { children: [
8732
+ /* @__PURE__ */ jsx(SecurityStatusDot, {}),
8733
+ "Active \u2014 Dedicated SPV"
8734
+ ] })
8735
+ ] }),
8736
+ /* @__PURE__ */ jsx(SecurityRowRight, { children: /* @__PURE__ */ jsx(SecurityRowLinks, { children: /* @__PURE__ */ jsx(SecurityDocLink, { href: "#documents", children: "SPV Constitution" }) }) })
8737
+ ] }),
8738
+ /* @__PURE__ */ jsxs(SecurityRow, { children: [
8739
+ /* @__PURE__ */ jsxs(SecurityRowLeft, { children: [
8740
+ /* @__PURE__ */ jsx(SecurityRowLabel, { children: "Independent Valuation" }),
8741
+ /* @__PURE__ */ jsx(SecurityRowValue, { children: "CBRE & Savills" })
8742
+ ] }),
8743
+ /* @__PURE__ */ jsx(SecurityRowRight, { children: /* @__PURE__ */ jsx(SecurityRowLinks, { children: /* @__PURE__ */ jsx(SecurityDocLink, { href: "#documents", children: "Valuation Report" }) }) })
8744
+ ] }),
8745
+ /* @__PURE__ */ jsxs(SecurityRow, { $noBorder: true, children: [
8746
+ /* @__PURE__ */ jsxs(SecurityRowLeft, { children: [
8747
+ /* @__PURE__ */ jsx(SecurityRowLabel, { children: "Data Protection" }),
8748
+ /* @__PURE__ */ jsxs(SecurityRowValue, { children: [
8749
+ /* @__PURE__ */ jsx(SecurityStatusDot, {}),
8750
+ "Compliant \u2014 Australian Privacy Act"
8751
+ ] })
8752
+ ] }),
8753
+ /* @__PURE__ */ jsx(SecurityRowRight, { children: /* @__PURE__ */ jsx(SecurityRowLinks, { children: /* @__PURE__ */ jsx(SecurityDocLink, { href: "#documents", children: "DPA Agreement" }) }) })
8754
+ ] })
8755
+ ] })
8739
8756
  ] })
8740
8757
  ] });
8741
8758
  }
@@ -9109,38 +9126,70 @@ var TradingHoursNote = styled9.div`
9109
9126
  color: rgba(255,255,255,0.35);
9110
9127
  border-top: 1px solid rgba(255,255,255,0.04);
9111
9128
  `;
9112
- var ProtectionsGrid = styled9.div`
9113
- display: grid;
9114
- grid-template-columns: 1fr 1fr;
9115
- gap: 1rem;
9116
- @media (max-width: 768px) { grid-template-columns: 1fr; }
9117
- `;
9118
- var ProtectionCard = styled9.div`
9119
- background: rgba(255,255,255,0.025);
9120
- border: 1px solid rgba(255,255,255,0.06);
9121
- border-radius: 10px;
9122
- padding: 1.25rem;
9129
+ var SecurityTable = styled9.div`
9130
+ display: flex;
9131
+ flex-direction: column;
9123
9132
  `;
9124
- var ProtectionIconWrap = styled9.div`
9125
- width: 36px;
9126
- height: 36px;
9127
- border-radius: 8px;
9128
- background: rgba(212,175,55,0.1);
9133
+ var SecurityRow = styled9.div`
9129
9134
  display: flex;
9130
9135
  align-items: center;
9131
- justify-content: center;
9132
- margin-bottom: 0.75rem;
9136
+ justify-content: space-between;
9137
+ padding: 1rem 0;
9138
+ border-bottom: ${({ $noBorder }) => $noBorder ? "none" : "1px solid rgba(255,255,255,0.06)"};
9139
+ gap: 1rem;
9140
+ @media (max-width: 640px) { flex-direction: column; align-items: flex-start; }
9133
9141
  `;
9134
- var ProtectionTitle = styled9.div`
9135
- font-size: 0.92rem;
9142
+ var SecurityRowLeft = styled9.div`
9143
+ display: flex;
9144
+ flex-direction: column;
9145
+ gap: 4px;
9146
+ `;
9147
+ var SecurityRowLabel = styled9.div`
9148
+ font-size: 0.88rem;
9136
9149
  font-weight: 600;
9137
9150
  color: #fff;
9138
- margin-bottom: 0.4rem;
9139
9151
  `;
9140
- var ProtectionDesc = styled9.div`
9141
- font-size: 0.8rem;
9152
+ var SecurityRowValue = styled9.div`
9153
+ display: flex;
9154
+ align-items: center;
9155
+ gap: 6px;
9156
+ font-size: 0.78rem;
9142
9157
  color: rgba(255,255,255,0.5);
9143
- line-height: 1.5;
9158
+ `;
9159
+ var SecurityRowLogo = styled9.div`
9160
+ display: flex;
9161
+ align-items: center;
9162
+ margin-top: 2px;
9163
+ `;
9164
+ var SecurityStatusDot = styled9.span`
9165
+ width: 6px;
9166
+ height: 6px;
9167
+ border-radius: 50%;
9168
+ background: #4ade80;
9169
+ display: inline-block;
9170
+ flex-shrink: 0;
9171
+ `;
9172
+ var SecurityRowRight = styled9.div`
9173
+ display: flex;
9174
+ align-items: center;
9175
+ flex-shrink: 0;
9176
+ `;
9177
+ var SecurityRowLinks = styled9.div`
9178
+ display: flex;
9179
+ gap: 1.25rem;
9180
+ `;
9181
+ var SecurityDocLink = styled9.a`
9182
+ font-size: 0.78rem;
9183
+ color: rgba(255,255,255,0.45);
9184
+ text-decoration: underline;
9185
+ text-underline-offset: 3px;
9186
+ text-decoration-color: rgba(255,255,255,0.2);
9187
+ cursor: pointer;
9188
+ transition: color 0.15s, text-decoration-color 0.15s;
9189
+ &:hover {
9190
+ color: rgba(212,175,55,0.9);
9191
+ text-decoration-color: rgba(212,175,55,0.5);
9192
+ }
9144
9193
  `;
9145
9194
  var HoldRatioWrap = styled9.div`
9146
9195
  display: flex;