@loafmarkets/ui 0.1.154 → 0.1.156

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 ScaleIcon = /* @__PURE__ */ jsxs("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "#D4AF37", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: [
8428
- /* @__PURE__ */ jsx("path", { d: "M12 3v18" }),
8429
- /* @__PURE__ */ jsx("path", { d: "M3 7l9-4 9 4" }),
8430
- /* @__PURE__ */ jsx("path", { d: "M3 7l3 5h-6l3-5z" }),
8431
- /* @__PURE__ */ jsx("path", { d: "M18 7l3 5h-6l3-5z" })
8432
- ] });
8433
8404
  function truncateAddress(addr) {
8434
8405
  if (addr.length <= 12) return addr;
8435
8406
  return `${addr.slice(0, 6)}...${addr.slice(-4)}`;
@@ -8730,97 +8701,47 @@ function PropertyOverview({
8730
8701
  ] }),
8731
8702
  /* @__PURE__ */ jsxs(Section, { children: [
8732
8703
  /* @__PURE__ */ jsx(SectionHeader, { children: "Tokenholder Security" }),
8733
- /* @__PURE__ */ jsx(SecurityIntro, { children: "Every token issued by Loaf Markets is underpinned by institutional-grade legal and structural protections, independently verified and documented." }),
8734
- /* @__PURE__ */ jsxs(SecurityTopRow, { children: [
8735
- /* @__PURE__ */ jsxs(SecurityBadge, { children: [
8736
- /* @__PURE__ */ jsx(SecurityBadgeIcon, { children: ScaleIcon }),
8737
- /* @__PURE__ */ jsxs(SecurityBadgeContent, { children: [
8738
- /* @__PURE__ */ jsx(SecurityBadgeLabel, { children: "Legal Structuring by" }),
8739
- /* @__PURE__ */ jsx(SecurityBadgeLogo, { children: /* @__PURE__ */ jsx("img", { src: "/Baker_McKenzie.png", alt: "Baker McKenzie", style: { height: "28px", filter: "brightness(0) invert(1)", opacity: 0.85 } }) })
8740
- ] })
8741
- ] }),
8742
- /* @__PURE__ */ jsxs(SecurityBadge, { children: [
8743
- /* @__PURE__ */ jsx(SecurityBadgeIcon, { children: FileCheckIcon }),
8744
- /* @__PURE__ */ jsxs(SecurityBadgeContent, { children: [
8745
- /* @__PURE__ */ jsx(SecurityBadgeLabel, { children: "Independent Valuation by" }),
8746
- /* @__PURE__ */ jsx(SecurityBadgeValuer, { children: "CBRE & Savills" })
8747
- ] })
8748
- ] })
8749
- ] }),
8750
- /* @__PURE__ */ jsxs(ProtectionsGrid, { children: [
8751
- /* @__PURE__ */ jsxs(ProtectionCard, { children: [
8752
- /* @__PURE__ */ jsxs(ProtectionCardHeader, { children: [
8753
- /* @__PURE__ */ jsx(ProtectionIconWrap, { children: ShieldIcon }),
8754
- /* @__PURE__ */ jsxs("div", { children: [
8755
- /* @__PURE__ */ jsx(ProtectionTitle, { children: "Security Interest in Asset" }),
8756
- /* @__PURE__ */ jsxs(ProtectionStatus, { children: [
8757
- /* @__PURE__ */ jsx(ProtectionStatusDot, {}),
8758
- "Secured & Registered"
8759
- ] })
8760
- ] })
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 } }) })
8761
8709
  ] }),
8762
- /* @__PURE__ */ jsx(ProtectionDesc, { children: "A registered mortgage over the property is held on behalf of token holders, secured against the NSW Land Registry. This ensures token holders have a direct, enforceable claim over the underlying real estate." }),
8763
- /* @__PURE__ */ jsxs(ProtectionDocs, { children: [
8764
- /* @__PURE__ */ jsx(ProtectionDocTag, { children: "Mortgage Agreement" }),
8765
- /* @__PURE__ */ jsx(ProtectionDocTag, { children: "Land Registry Filing" })
8766
- ] })
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
+ ] }) })
8767
8714
  ] }),
8768
- /* @__PURE__ */ jsxs(ProtectionCard, { children: [
8769
- /* @__PURE__ */ jsxs(ProtectionCardHeader, { children: [
8770
- /* @__PURE__ */ jsx(ProtectionIconWrap, { children: LockIcon }),
8771
- /* @__PURE__ */ jsxs("div", { children: [
8772
- /* @__PURE__ */ jsx(ProtectionTitle, { children: "Bankruptcy Remote SPV" }),
8773
- /* @__PURE__ */ jsxs(ProtectionStatus, { children: [
8774
- /* @__PURE__ */ jsx(ProtectionStatusDot, {}),
8775
- "Active"
8776
- ] })
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"
8777
8721
  ] })
8778
8722
  ] }),
8779
- /* @__PURE__ */ jsx(ProtectionDesc, { children: "The property is held within a dedicated Special Purpose Vehicle, legally isolated from Loaf Markets' operating entity. In the event of platform insolvency, token holder assets remain protected and ring-fenced." }),
8780
- /* @__PURE__ */ jsxs(ProtectionDocs, { children: [
8781
- /* @__PURE__ */ jsx(ProtectionDocTag, { children: "SPV Constitution" }),
8782
- /* @__PURE__ */ jsx(ProtectionDocTag, { children: "Legal Opinion" })
8783
- ] })
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
+ ] }) })
8784
8727
  ] }),
8785
- /* @__PURE__ */ jsxs(ProtectionCard, { children: [
8786
- /* @__PURE__ */ jsxs(ProtectionCardHeader, { children: [
8787
- /* @__PURE__ */ jsx(ProtectionIconWrap, { children: FileCheckIcon }),
8788
- /* @__PURE__ */ jsxs("div", { children: [
8789
- /* @__PURE__ */ jsx(ProtectionTitle, { children: "Data Protection & Compliance" }),
8790
- /* @__PURE__ */ jsxs(ProtectionStatus, { children: [
8791
- /* @__PURE__ */ jsx(ProtectionStatusDot, {}),
8792
- "Compliant"
8793
- ] })
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"
8794
8734
  ] })
8795
8735
  ] }),
8796
- /* @__PURE__ */ jsx(ProtectionDesc, { children: "All investor data is handled under executed Data Processing Agreements compliant with Australian Privacy Act and GDPR standards. KYC/AML procedures follow AUSTRAC reporting obligations." }),
8797
- /* @__PURE__ */ jsxs(ProtectionDocs, { children: [
8798
- /* @__PURE__ */ jsx(ProtectionDocTag, { children: "DPA Agreement" }),
8799
- /* @__PURE__ */ jsx(ProtectionDocTag, { children: "Privacy Policy" })
8800
- ] })
8736
+ /* @__PURE__ */ jsx(SecurityRowRight, { children: /* @__PURE__ */ jsx(SecurityRowLinks, { children: /* @__PURE__ */ jsx(SecurityDocLink, { href: "#documents", children: "SPV Constitution" }) }) })
8801
8737
  ] }),
8802
- /* @__PURE__ */ jsxs(ProtectionCard, { children: [
8803
- /* @__PURE__ */ jsxs(ProtectionCardHeader, { children: [
8804
- /* @__PURE__ */ jsx(ProtectionIconWrap, { children: BuildingIcon }),
8805
- /* @__PURE__ */ jsxs("div", { children: [
8806
- /* @__PURE__ */ jsx(ProtectionTitle, { children: "Independent Valuation" }),
8807
- /* @__PURE__ */ jsxs(ProtectionStatus, { children: [
8808
- /* @__PURE__ */ jsx(ProtectionStatusDot, {}),
8809
- "Current"
8810
- ] })
8811
- ] })
8738
+ /* @__PURE__ */ jsxs(SecurityRow, { $noBorder: true, children: [
8739
+ /* @__PURE__ */ jsxs(SecurityRowLeft, { children: [
8740
+ /* @__PURE__ */ jsx(SecurityRowLabel, { children: "Independent Valuation" }),
8741
+ /* @__PURE__ */ jsx(SecurityRowLogo, { children: /* @__PURE__ */ jsx("img", { src: "/savills.png", alt: "Savills", style: { height: "18px", filter: "brightness(0) invert(1)", opacity: 0.8 } }) })
8812
8742
  ] }),
8813
- /* @__PURE__ */ jsx(ProtectionDesc, { children: "Property valuations are conducted by independent, internationally recognised firms (CBRE, Savills) at regular intervals. Reports are available for review in the Documents tab." }),
8814
- /* @__PURE__ */ jsxs(ProtectionDocs, { children: [
8815
- /* @__PURE__ */ jsx(ProtectionDocTag, { children: "Valuation Report" }),
8816
- /* @__PURE__ */ jsx(ProtectionDocTag, { children: "Methodology" })
8817
- ] })
8743
+ /* @__PURE__ */ jsx(SecurityRowRight, { children: /* @__PURE__ */ jsx(SecurityRowLinks, { children: /* @__PURE__ */ jsx(SecurityDocLink, { href: "#documents", children: "Valuation Report" }) }) })
8818
8744
  ] })
8819
- ] }),
8820
- /* @__PURE__ */ jsxs(SecurityFooter, { children: [
8821
- "Full documentation including legal opinions, mortgage instruments, SPV constitutions, and valuation reports is available in the ",
8822
- /* @__PURE__ */ jsx("strong", { children: "Documents" }),
8823
- " tab."
8824
8745
  ] })
8825
8746
  ] })
8826
8747
  ] });
@@ -9195,145 +9116,69 @@ var TradingHoursNote = styled9.div`
9195
9116
  color: rgba(255,255,255,0.35);
9196
9117
  border-top: 1px solid rgba(255,255,255,0.04);
9197
9118
  `;
9198
- var SecurityIntro = styled9.p`
9199
- font-size: 0.85rem;
9200
- color: rgba(255,255,255,0.5);
9201
- line-height: 1.6;
9202
- margin: 0 0 1.5rem;
9203
- max-width: 720px;
9204
- `;
9205
- var SecurityTopRow = styled9.div`
9119
+ var SecurityTable = styled9.div`
9206
9120
  display: flex;
9207
- gap: 1rem;
9208
- margin-bottom: 1.25rem;
9209
- @media (max-width: 768px) { flex-direction: column; }
9121
+ flex-direction: column;
9210
9122
  `;
9211
- var SecurityBadge = styled9.div`
9212
- flex: 1;
9123
+ var SecurityRow = styled9.div`
9213
9124
  display: flex;
9214
9125
  align-items: center;
9126
+ justify-content: space-between;
9127
+ padding: 1rem 0;
9128
+ border-bottom: ${({ $noBorder }) => $noBorder ? "none" : "1px solid rgba(255,255,255,0.06)"};
9215
9129
  gap: 1rem;
9216
- background: rgba(212,175,55,0.04);
9217
- border: 1px solid rgba(212,175,55,0.15);
9218
- border-radius: 10px;
9219
- padding: 1rem 1.25rem;
9220
- `;
9221
- var SecurityBadgeIcon = styled9.div`
9222
- width: 40px;
9223
- height: 40px;
9224
- border-radius: 8px;
9225
- background: rgba(212,175,55,0.1);
9226
- display: flex;
9227
- align-items: center;
9228
- justify-content: center;
9229
- flex-shrink: 0;
9130
+ @media (max-width: 640px) { flex-direction: column; align-items: flex-start; }
9230
9131
  `;
9231
- var SecurityBadgeContent = styled9.div`
9132
+ var SecurityRowLeft = styled9.div`
9232
9133
  display: flex;
9233
9134
  flex-direction: column;
9234
9135
  gap: 4px;
9235
9136
  `;
9236
- var SecurityBadgeLabel = styled9.span`
9237
- font-size: 0.72rem;
9238
- color: rgba(255,255,255,0.45);
9239
- text-transform: uppercase;
9240
- letter-spacing: 0.04em;
9241
- font-weight: 500;
9242
- `;
9243
- var SecurityBadgeLogo = styled9.div`
9244
- display: flex;
9245
- align-items: center;
9246
- height: 28px;
9247
- `;
9248
- var SecurityBadgeValuer = styled9.div`
9249
- font-size: 1rem;
9137
+ var SecurityRowLabel = styled9.div`
9138
+ font-size: 0.88rem;
9250
9139
  font-weight: 600;
9251
9140
  color: #fff;
9252
- letter-spacing: 0.02em;
9253
- `;
9254
- var ProtectionsGrid = styled9.div`
9255
- display: grid;
9256
- grid-template-columns: 1fr 1fr;
9257
- gap: 1rem;
9258
- @media (max-width: 768px) { grid-template-columns: 1fr; }
9259
- `;
9260
- var ProtectionCard = styled9.div`
9261
- background: rgba(255,255,255,0.025);
9262
- border: 1px solid rgba(255,255,255,0.06);
9263
- border-radius: 10px;
9264
- padding: 1.25rem;
9265
- display: flex;
9266
- flex-direction: column;
9267
- gap: 0.75rem;
9268
- `;
9269
- var ProtectionCardHeader = styled9.div`
9270
- display: flex;
9271
- align-items: flex-start;
9272
- gap: 0.75rem;
9273
9141
  `;
9274
- var ProtectionIconWrap = styled9.div`
9275
- width: 36px;
9276
- height: 36px;
9277
- border-radius: 8px;
9278
- background: rgba(212,175,55,0.1);
9142
+ var SecurityRowValue = styled9.div`
9279
9143
  display: flex;
9280
9144
  align-items: center;
9281
- justify-content: center;
9282
- flex-shrink: 0;
9283
- `;
9284
- var ProtectionTitle = styled9.div`
9285
- font-size: 0.92rem;
9286
- font-weight: 600;
9287
- color: #fff;
9288
- margin-bottom: 2px;
9145
+ gap: 6px;
9146
+ font-size: 0.78rem;
9147
+ color: rgba(255,255,255,0.5);
9289
9148
  `;
9290
- var ProtectionStatus = styled9.div`
9149
+ var SecurityRowLogo = styled9.div`
9291
9150
  display: flex;
9292
9151
  align-items: center;
9293
- gap: 5px;
9294
- font-size: 0.72rem;
9295
- color: #4ade80;
9296
- font-weight: 500;
9152
+ margin-top: 2px;
9297
9153
  `;
9298
- var ProtectionStatusDot = styled9.span`
9154
+ var SecurityStatusDot = styled9.span`
9299
9155
  width: 6px;
9300
9156
  height: 6px;
9301
9157
  border-radius: 50%;
9302
9158
  background: #4ade80;
9303
9159
  display: inline-block;
9160
+ flex-shrink: 0;
9304
9161
  `;
9305
- var ProtectionDesc = styled9.div`
9306
- font-size: 0.8rem;
9307
- color: rgba(255,255,255,0.5);
9308
- line-height: 1.6;
9309
- `;
9310
- var ProtectionDocs = styled9.div`
9162
+ var SecurityRowRight = styled9.div`
9311
9163
  display: flex;
9312
- flex-wrap: wrap;
9313
- gap: 6px;
9314
- margin-top: auto;
9164
+ align-items: center;
9165
+ flex-shrink: 0;
9315
9166
  `;
9316
- var ProtectionDocTag = styled9.span`
9317
- font-size: 0.68rem;
9318
- color: rgba(212,175,55,0.8);
9319
- background: rgba(212,175,55,0.08);
9320
- border: 1px solid rgba(212,175,55,0.12);
9321
- border-radius: 4px;
9322
- padding: 3px 8px;
9323
- font-weight: 500;
9167
+ var SecurityRowLinks = styled9.div`
9168
+ display: flex;
9169
+ gap: 1.25rem;
9324
9170
  `;
9325
- var SecurityFooter = styled9.div`
9326
- margin-top: 1.25rem;
9327
- padding: 0.85rem 1rem;
9328
- background: rgba(255,255,255,0.02);
9329
- border: 1px solid rgba(255,255,255,0.05);
9330
- border-radius: 8px;
9171
+ var SecurityDocLink = styled9.a`
9331
9172
  font-size: 0.78rem;
9332
- color: rgba(255,255,255,0.4);
9333
- line-height: 1.5;
9334
- strong {
9335
- color: rgba(212,175,55,0.8);
9336
- font-weight: 600;
9173
+ color: rgba(255,255,255,0.45);
9174
+ text-decoration: underline;
9175
+ text-underline-offset: 3px;
9176
+ text-decoration-color: rgba(255,255,255,0.2);
9177
+ cursor: pointer;
9178
+ transition: color 0.15s, text-decoration-color 0.15s;
9179
+ &:hover {
9180
+ color: rgba(212,175,55,0.9);
9181
+ text-decoration-color: rgba(212,175,55,0.5);
9337
9182
  }
9338
9183
  `;
9339
9184
  var HoldRatioWrap = styled9.div`