@loafmarkets/ui 0.1.170 → 0.1.171

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
@@ -8538,7 +8538,7 @@ function PropertyOverview({
8538
8538
  }
8539
8539
  return f;
8540
8540
  })();
8541
- const propertyInfo = propertyInfoProp ?? (() => {
8541
+ propertyInfoProp ?? (() => {
8542
8542
  const info = [...DEFAULT_PROPERTY_INFO];
8543
8543
  if (propertyTypeLabel && !overviewData) info[0] = { label: "Property Type", value: propertyTypeLabel };
8544
8544
  if (overviewData) {
@@ -8694,39 +8694,134 @@ function PropertyOverview({
8694
8694
  }
8695
8695
  ) }),
8696
8696
  /* @__PURE__ */ jsxRuntime.jsxs(Section, { children: [
8697
- /* @__PURE__ */ jsxRuntime.jsx(SectionHeader, { children: "Asset Details" }),
8697
+ /* @__PURE__ */ jsxRuntime.jsx(SectionHeader, { children: "Investment Profile" }),
8698
+ /* @__PURE__ */ jsxRuntime.jsxs(InvestmentNarrativesRow, { children: [
8699
+ /* @__PURE__ */ jsxRuntime.jsxs(NarrativeCard, { children: [
8700
+ /* @__PURE__ */ jsxRuntime.jsx(NarrativeIcon, { children: /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M22 12h-4l-3 9L9 3l-3 9H2" }) }) }),
8701
+ /* @__PURE__ */ jsxRuntime.jsx(NarrativeTitle, { children: "Generational Compounding" }),
8702
+ /* @__PURE__ */ jsxRuntime.jsx(NarrativeDesc, { children: "Acquired in 1976 for \xA340,000 \u2014 compounded through every market cycle to a current valuation exceeding A$20M." })
8703
+ ] }),
8704
+ /* @__PURE__ */ jsxRuntime.jsxs(NarrativeCard, { children: [
8705
+ /* @__PURE__ */ jsxRuntime.jsx(NarrativeIcon, { children: /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z" }) }) }),
8706
+ /* @__PURE__ */ jsxRuntime.jsx(NarrativeTitle, { children: "Permanent Scarcity" }),
8707
+ /* @__PURE__ */ jsxRuntime.jsx(NarrativeDesc, { children: "Heritage harbour-front estates in Mosman cannot be replicated. Sustained global demand into this safe-haven supports long-term price growth." })
8708
+ ] }),
8709
+ /* @__PURE__ */ jsxRuntime.jsxs(NarrativeCard, { children: [
8710
+ /* @__PURE__ */ jsxRuntime.jsx(NarrativeIcon, { children: /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", children: [
8711
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "10" }),
8712
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 6v6l4 2" })
8713
+ ] }) }),
8714
+ /* @__PURE__ */ jsxRuntime.jsx(NarrativeTitle, { children: "Liquidity Premium" }),
8715
+ /* @__PURE__ */ jsxRuntime.jsx(NarrativeDesc, { children: "Listed assets historically trade at a 20\u201330% premium to unlisted counterparts. First individual property admitted to a continuously traded market." })
8716
+ ] })
8717
+ ] }),
8698
8718
  /* @__PURE__ */ jsxRuntime.jsxs(StatsGrid, { children: [
8699
8719
  /* @__PURE__ */ jsxRuntime.jsxs(StatsColumn, { children: [
8700
- /* @__PURE__ */ jsxRuntime.jsx(StatsColumnHeader, { children: "Key Metrics" }),
8701
- landSize != null && /* @__PURE__ */ jsxRuntime.jsxs(StatRow, { children: [
8702
- /* @__PURE__ */ jsxRuntime.jsx(StatLabel, { children: "Land Size" }),
8720
+ /* @__PURE__ */ jsxRuntime.jsx(StatsColumnHeader, { children: "Capital History" }),
8721
+ /* @__PURE__ */ jsxRuntime.jsxs(TimelineWrap, { children: [
8722
+ /* @__PURE__ */ jsxRuntime.jsxs(TimelineEntry, { children: [
8723
+ /* @__PURE__ */ jsxRuntime.jsx(TimelineYear, { children: "1880s" }),
8724
+ /* @__PURE__ */ jsxRuntime.jsx(TimelineDot, {}),
8725
+ /* @__PURE__ */ jsxRuntime.jsx(TimelineDetail, { children: /* @__PURE__ */ jsxRuntime.jsx(TimelineLabel, { children: "Built \u2014 Pre-Federation" }) })
8726
+ ] }),
8727
+ /* @__PURE__ */ jsxRuntime.jsxs(TimelineEntry, { children: [
8728
+ /* @__PURE__ */ jsxRuntime.jsx(TimelineYear, { children: "1976" }),
8729
+ /* @__PURE__ */ jsxRuntime.jsx(TimelineDot, {}),
8730
+ /* @__PURE__ */ jsxRuntime.jsxs(TimelineDetail, { children: [
8731
+ /* @__PURE__ */ jsxRuntime.jsx(TimelineLabel, { children: "Sold" }),
8732
+ /* @__PURE__ */ jsxRuntime.jsx(TimelinePrice, { children: "\xA340,000" })
8733
+ ] })
8734
+ ] }),
8735
+ /* @__PURE__ */ jsxRuntime.jsxs(TimelineEntry, { children: [
8736
+ /* @__PURE__ */ jsxRuntime.jsx(TimelineYear, { children: "1993" }),
8737
+ /* @__PURE__ */ jsxRuntime.jsx(TimelineDot, {}),
8738
+ /* @__PURE__ */ jsxRuntime.jsxs(TimelineDetail, { children: [
8739
+ /* @__PURE__ */ jsxRuntime.jsx(TimelineLabel, { children: "Sold" }),
8740
+ /* @__PURE__ */ jsxRuntime.jsx(TimelinePrice, { children: "$1.33M" })
8741
+ ] })
8742
+ ] }),
8743
+ /* @__PURE__ */ jsxRuntime.jsxs(TimelineEntry, { children: [
8744
+ /* @__PURE__ */ jsxRuntime.jsx(TimelineYear, { children: "2006" }),
8745
+ /* @__PURE__ */ jsxRuntime.jsx(TimelineDot, {}),
8746
+ /* @__PURE__ */ jsxRuntime.jsxs(TimelineDetail, { children: [
8747
+ /* @__PURE__ */ jsxRuntime.jsx(TimelineLabel, { children: "Sold" }),
8748
+ /* @__PURE__ */ jsxRuntime.jsx(TimelinePrice, { children: "$7.86M" })
8749
+ ] })
8750
+ ] }),
8751
+ /* @__PURE__ */ jsxRuntime.jsxs(TimelineEntry, { children: [
8752
+ /* @__PURE__ */ jsxRuntime.jsx(TimelineYear, { children: "2021" }),
8753
+ /* @__PURE__ */ jsxRuntime.jsx(TimelineDot, {}),
8754
+ /* @__PURE__ */ jsxRuntime.jsxs(TimelineDetail, { children: [
8755
+ /* @__PURE__ */ jsxRuntime.jsx(TimelineLabel, { children: "Sold \u2014 COVID correction" }),
8756
+ /* @__PURE__ */ jsxRuntime.jsx(TimelinePrice, { children: "$9.09M" })
8757
+ ] })
8758
+ ] }),
8759
+ /* @__PURE__ */ jsxRuntime.jsxs(TimelineEntry, { $last: true, children: [
8760
+ /* @__PURE__ */ jsxRuntime.jsx(TimelineYear, { children: "2026" }),
8761
+ /* @__PURE__ */ jsxRuntime.jsx(TimelineDot, { $active: true }),
8762
+ /* @__PURE__ */ jsxRuntime.jsxs(TimelineDetail, { children: [
8763
+ /* @__PURE__ */ jsxRuntime.jsx(TimelineLabel, { children: "Loaf Offering" }),
8764
+ /* @__PURE__ */ jsxRuntime.jsx(TimelinePrice, { $gold: true, children: "$18.65M" })
8765
+ ] })
8766
+ ] })
8767
+ ] }),
8768
+ /* @__PURE__ */ jsxRuntime.jsx(ComparableSalesTitle, { children: "Comparable Sales" }),
8769
+ /* @__PURE__ */ jsxRuntime.jsxs(StatRow, { children: [
8770
+ /* @__PURE__ */ jsxRuntime.jsx(StatLabel, { children: "200A Raglan St, Mosman" }),
8703
8771
  /* @__PURE__ */ jsxRuntime.jsxs(StatValue, { children: [
8704
- landSize.toLocaleString(),
8772
+ "$16.07M ",
8773
+ /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: "0.7rem", color: "rgba(255,255,255,0.3)", fontWeight: 400 }, children: "Mar 2022" })
8774
+ ] })
8775
+ ] }),
8776
+ /* @__PURE__ */ jsxRuntime.jsxs(StatRow, { children: [
8777
+ /* @__PURE__ */ jsxRuntime.jsx(StatLabel, { children: "7 Bradleys Head Rd, Mosman" }),
8778
+ /* @__PURE__ */ jsxRuntime.jsxs(StatValue, { children: [
8779
+ "$27.96M ",
8780
+ /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: "0.7rem", color: "rgba(255,255,255,0.3)", fontWeight: 400 }, children: "Aug 2024" })
8781
+ ] })
8782
+ ] })
8783
+ ] }),
8784
+ /* @__PURE__ */ jsxRuntime.jsxs(StatsColumn, { children: [
8785
+ /* @__PURE__ */ jsxRuntime.jsx(StatsColumnHeader, { children: "Asset Specification" }),
8786
+ /* @__PURE__ */ jsxRuntime.jsxs(StatRow, { children: [
8787
+ /* @__PURE__ */ jsxRuntime.jsx(StatLabel, { children: "Land (Freehold)" }),
8788
+ /* @__PURE__ */ jsxRuntime.jsxs(StatValue, { children: [
8789
+ landSize?.toLocaleString() ?? "1,848",
8705
8790
  " sqm"
8706
8791
  ] })
8707
8792
  ] }),
8708
- buildingSize != null && /* @__PURE__ */ jsxRuntime.jsxs(StatRow, { children: [
8709
- /* @__PURE__ */ jsxRuntime.jsx(StatLabel, { children: "Floor Area" }),
8793
+ /* @__PURE__ */ jsxRuntime.jsxs(StatRow, { children: [
8794
+ /* @__PURE__ */ jsxRuntime.jsx(StatLabel, { children: "Interior" }),
8710
8795
  /* @__PURE__ */ jsxRuntime.jsxs(StatValue, { children: [
8711
- buildingSize.toLocaleString(),
8796
+ buildingSize?.toLocaleString() ?? "~800",
8712
8797
  " sqm"
8713
8798
  ] })
8714
8799
  ] }),
8800
+ /* @__PURE__ */ jsxRuntime.jsxs(StatRow, { children: [
8801
+ /* @__PURE__ */ jsxRuntime.jsx(StatLabel, { children: "Built" }),
8802
+ /* @__PURE__ */ jsxRuntime.jsx(StatValue, { children: "1880 \u2014 Heritage Listed" })
8803
+ ] }),
8804
+ /* @__PURE__ */ jsxRuntime.jsxs(StatRow, { children: [
8805
+ /* @__PURE__ */ jsxRuntime.jsx(StatLabel, { children: "Zoning" }),
8806
+ /* @__PURE__ */ jsxRuntime.jsx(StatValue, { children: "R3 \u2014 Development Potential" })
8807
+ ] }),
8808
+ /* @__PURE__ */ jsxRuntime.jsxs(StatRow, { children: [
8809
+ /* @__PURE__ */ jsxRuntime.jsx(StatLabel, { children: "Heritage Premium" }),
8810
+ /* @__PURE__ */ jsxRuntime.jsx(StatValue, { style: { color: "#4ade80" }, children: "+12% vs non-heritage" })
8811
+ ] }),
8812
+ /* @__PURE__ */ jsxRuntime.jsxs(StatRow, { children: [
8813
+ /* @__PURE__ */ jsxRuntime.jsx(StatLabel, { children: "Suburb Median" }),
8814
+ /* @__PURE__ */ jsxRuntime.jsx(StatValue, { children: "$4.2M (Mosman)" })
8815
+ ] }),
8816
+ /* @__PURE__ */ jsxRuntime.jsxs(StatRow, { children: [
8817
+ /* @__PURE__ */ jsxRuntime.jsx(StatLabel, { children: "5yr Suburb Growth" }),
8818
+ /* @__PURE__ */ jsxRuntime.jsx(StatValue, { style: { color: "#4ade80" }, children: "+90%" })
8819
+ ] }),
8715
8820
  /* @__PURE__ */ jsxRuntime.jsx(AssetFeatureRow, { children: features.map((item, i) => /* @__PURE__ */ jsxRuntime.jsxs(AssetFeatureItem, { children: [
8716
8821
  item.icon && /* @__PURE__ */ jsxRuntime.jsx(AssetFeatureIcon, { children: item.icon }),
8717
8822
  item.value && /* @__PURE__ */ jsxRuntime.jsx(AssetFeatureValue, { children: item.value }),
8718
8823
  /* @__PURE__ */ jsxRuntime.jsx(AssetFeatureLabel, { children: item.label })
8719
8824
  ] }, i)) })
8720
- ] }),
8721
- /* @__PURE__ */ jsxRuntime.jsxs(StatsColumn, { children: [
8722
- /* @__PURE__ */ jsxRuntime.jsx(StatsColumnHeader, { children: "Property Info" }),
8723
- propertyInfo.map((item, i) => /* @__PURE__ */ jsxRuntime.jsxs(StatRow, { children: [
8724
- /* @__PURE__ */ jsxRuntime.jsx(StatLabel, { children: item.label }),
8725
- /* @__PURE__ */ jsxRuntime.jsxs(StatValue, { style: { color: item.status === "active" ? "#4ade80" : item.status === "progress" ? "#D4AF37" : void 0 }, children: [
8726
- item.status && /* @__PURE__ */ jsxRuntime.jsx("span", { style: { display: "inline-block", width: 6, height: 6, borderRadius: "50%", background: item.status === "active" ? "#4ade80" : "#D4AF37", marginRight: 6 } }),
8727
- item.value
8728
- ] })
8729
- ] }, i))
8730
8825
  ] })
8731
8826
  ] })
8732
8827
  ] }),
@@ -9154,6 +9249,102 @@ var StatValue = styled9__default.default.span`
9154
9249
  color: ${(p) => p.$gold ? "#D4AF37" : "#fff"};
9155
9250
  font-variant-numeric: tabular-nums;
9156
9251
  `;
9252
+ var InvestmentNarrativesRow = styled9__default.default.div`
9253
+ display: grid;
9254
+ grid-template-columns: repeat(3, 1fr);
9255
+ gap: 0.75rem;
9256
+ margin-bottom: 1.25rem;
9257
+ @media (max-width: 768px) { grid-template-columns: 1fr; }
9258
+ `;
9259
+ var NarrativeCard = styled9__default.default.div`
9260
+ background: rgba(255,255,255,0.025);
9261
+ border: 1px solid rgba(255,255,255,0.06);
9262
+ border-radius: 10px;
9263
+ padding: 1.25rem;
9264
+ display: flex;
9265
+ flex-direction: column;
9266
+ gap: 0.5rem;
9267
+ transition: border-color 0.2s ease;
9268
+ &:hover { border-color: rgba(212,175,55,0.25); }
9269
+ `;
9270
+ var NarrativeIcon = styled9__default.default.div`
9271
+ width: 36px;
9272
+ height: 36px;
9273
+ border-radius: 8px;
9274
+ background: rgba(212,175,55,0.08);
9275
+ border: 1px solid rgba(212,175,55,0.15);
9276
+ display: flex;
9277
+ align-items: center;
9278
+ justify-content: center;
9279
+ color: #D4AF37;
9280
+ flex-shrink: 0;
9281
+ `;
9282
+ var NarrativeTitle = styled9__default.default.div`
9283
+ font-size: 0.88rem;
9284
+ font-weight: 600;
9285
+ color: #fff;
9286
+ `;
9287
+ var NarrativeDesc = styled9__default.default.div`
9288
+ font-size: 0.78rem;
9289
+ color: rgba(255,255,255,0.45);
9290
+ line-height: 1.55;
9291
+ `;
9292
+ var TimelineWrap = styled9__default.default.div`
9293
+ display: flex;
9294
+ flex-direction: column;
9295
+ position: relative;
9296
+ padding-left: 0;
9297
+ `;
9298
+ var TimelineEntry = styled9__default.default.div`
9299
+ display: grid;
9300
+ grid-template-columns: 48px 12px 1fr;
9301
+ align-items: center;
9302
+ gap: 0.75rem;
9303
+ padding: 0.55rem 0;
9304
+ border-bottom: ${(p) => p.$last ? "none" : "1px solid rgba(255,255,255,0.03)"};
9305
+ `;
9306
+ var TimelineYear = styled9__default.default.span`
9307
+ font-size: 0.72rem;
9308
+ font-weight: 500;
9309
+ color: rgba(255,255,255,0.4);
9310
+ text-align: right;
9311
+ font-variant-numeric: tabular-nums;
9312
+ `;
9313
+ var TimelineDot = styled9__default.default.div`
9314
+ width: 8px;
9315
+ height: 8px;
9316
+ border-radius: 50%;
9317
+ background: ${(p) => p.$active ? "#D4AF37" : "rgba(255,255,255,0.15)"};
9318
+ border: ${(p) => p.$active ? "2px solid rgba(212,175,55,0.4)" : "none"};
9319
+ justify-self: center;
9320
+ `;
9321
+ var TimelineDetail = styled9__default.default.div`
9322
+ display: flex;
9323
+ align-items: center;
9324
+ justify-content: space-between;
9325
+ gap: 0.5rem;
9326
+ `;
9327
+ var TimelineLabel = styled9__default.default.span`
9328
+ font-size: 0.8rem;
9329
+ color: rgba(255,255,255,0.6);
9330
+ `;
9331
+ var TimelinePrice = styled9__default.default.span`
9332
+ font-size: 0.85rem;
9333
+ font-weight: 600;
9334
+ color: ${(p) => p.$gold ? "#D4AF37" : "#fff"};
9335
+ font-variant-numeric: tabular-nums;
9336
+ `;
9337
+ var ComparableSalesTitle = styled9__default.default.div`
9338
+ font-size: 0.65rem;
9339
+ color: rgba(255,255,255,0.35);
9340
+ text-transform: uppercase;
9341
+ letter-spacing: 0.08em;
9342
+ font-weight: 500;
9343
+ margin-top: 1rem;
9344
+ padding-top: 0.75rem;
9345
+ padding-bottom: 0.5rem;
9346
+ border-top: 1px solid rgba(255,255,255,0.04);
9347
+ `;
9157
9348
  var AssetFeatureRow = styled9__default.default.div`
9158
9349
  display: flex;
9159
9350
  flex-wrap: wrap;