@loafmarkets/ui 0.1.343 → 0.1.344

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
@@ -2488,6 +2488,11 @@ var PropertyTour = React5.forwardRef(
2488
2488
  ...props
2489
2489
  }, ref) => {
2490
2490
  const videoRef = React5.useRef(null);
2491
+ React5.useEffect(() => {
2492
+ if (videoRef.current && src) {
2493
+ videoRef.current.load();
2494
+ }
2495
+ }, [src]);
2491
2496
  React5.useEffect(() => {
2492
2497
  const video = videoRef.current;
2493
2498
  if (!video) return;
@@ -8644,7 +8649,7 @@ function PropertyOverview({
8644
8649
  const tokenMarketCap = tokenPriceValue && resolvedTokensIssued ? tokenPriceValue * resolvedTokensIssued : null;
8645
8650
  const currentDividendYield = tokenMarketCap && monthlyCoupon > 0 ? (monthlyCoupon * 12 / tokenMarketCap * 100).toFixed(2) : null;
8646
8651
  const loadingSkeleton = /* @__PURE__ */ jsx(Skeleton, { width: 90, height: 18 });
8647
- const rawPropertyType = overviewData?.propertyType ?? propertyTypeLabel ?? null;
8652
+ const rawPropertyType = propertyTypeLabel ?? null;
8648
8653
  const resolvedPropertyType = rawPropertyType?.toLowerCase() === "house" ? "Residential" : rawPropertyType;
8649
8654
  const galleryImages = images ?? [];
8650
8655
  const chainValue = /* @__PURE__ */ jsxs(ChainLogos, { children: [
@@ -8805,102 +8810,7 @@ function PropertyOverview({
8805
8810
  item.icon && /* @__PURE__ */ jsx(AssetFeatureIcon, { children: item.icon }),
8806
8811
  item.value && /* @__PURE__ */ jsx(AssetFeatureValue, { children: item.value }),
8807
8812
  /* @__PURE__ */ jsx(AssetFeatureLabel, { children: item.label })
8808
- ] }, i)) }),
8809
- /* @__PURE__ */ jsxs(CompAssetsPanel, { children: [
8810
- /* @__PURE__ */ jsx(StatsColumnHeader, { children: "Comparable Assets" }),
8811
- /* @__PURE__ */ jsxs(CompAssetsGrid, { children: [
8812
- /* @__PURE__ */ jsxs(CompAssetStrip, { children: [
8813
- /* @__PURE__ */ jsx(CompAssetStripImg, { children: /* @__PURE__ */ jsx("img", { src: "/boondabah.jpg", alt: "Boondabah", onError: (e) => {
8814
- e.target.style.display = "none";
8815
- } }) }),
8816
- /* @__PURE__ */ jsxs(CompAssetStripInfo, { children: [
8817
- /* @__PURE__ */ jsxs(CompAssetStripName, { children: [
8818
- "Boondabah ",
8819
- /* @__PURE__ */ jsx(CompAssetBadge, { children: "HERITAGE" })
8820
- ] }),
8821
- /* @__PURE__ */ jsx(CompAssetStripAddr, { children: "200A Raglan St, Mosman" })
8822
- ] }),
8823
- /* @__PURE__ */ jsxs(CompAssetStripRight, { children: [
8824
- /* @__PURE__ */ jsx(CompAssetStripPrice, { children: "$16.07M" }),
8825
- /* @__PURE__ */ jsx(CompAssetStripGrowth, { style: { color: "#4ade80" }, children: "+119%" })
8826
- ] }),
8827
- /* @__PURE__ */ jsxs(CompAssetTooltip, { children: [
8828
- /* @__PURE__ */ jsx(CompAssetTooltipArrow, {}),
8829
- /* @__PURE__ */ jsx(CompAssetTooltipImg, { children: /* @__PURE__ */ jsx("img", { src: "/boondabah.jpg", alt: "Boondabah", onError: (e) => {
8830
- e.target.style.display = "none";
8831
- } }) }),
8832
- /* @__PURE__ */ jsxs(CompAssetTooltipTitle, { children: [
8833
- "Boondabah ",
8834
- /* @__PURE__ */ jsx(CompAssetBadge, { children: "HERITAGE" })
8835
- ] }),
8836
- /* @__PURE__ */ jsx(CompAssetTooltipAddr, { children: "200A Raglan St, Mosman" }),
8837
- /* @__PURE__ */ jsxs(CompAssetTooltipStats, { children: [
8838
- /* @__PURE__ */ jsxs(CompAssetTooltipRow, { children: [
8839
- /* @__PURE__ */ jsx("span", { children: "Sale Price" }),
8840
- /* @__PURE__ */ jsx("span", { children: "$16.07M" })
8841
- ] }),
8842
- /* @__PURE__ */ jsxs(CompAssetTooltipRow, { children: [
8843
- /* @__PURE__ */ jsx("span", { children: "Land" }),
8844
- /* @__PURE__ */ jsx("span", { children: "2,066 sqm" })
8845
- ] }),
8846
- /* @__PURE__ */ jsxs(CompAssetTooltipRow, { children: [
8847
- /* @__PURE__ */ jsx("span", { children: "Era" }),
8848
- /* @__PURE__ */ jsx("span", { children: "c.1905" })
8849
- ] }),
8850
- /* @__PURE__ */ jsxs(CompAssetTooltipRow, { children: [
8851
- /* @__PURE__ */ jsx("span", { children: "Growth" }),
8852
- /* @__PURE__ */ jsx("span", { style: { color: "#4ade80" }, children: "+119%" })
8853
- ] })
8854
- ] })
8855
- ] })
8856
- ] }),
8857
- /* @__PURE__ */ jsxs(CompAssetStrip, { children: [
8858
- /* @__PURE__ */ jsx(CompAssetStripImg, { children: /* @__PURE__ */ jsx("img", { src: "/bradleys.jpg", alt: "Dobroyd", onError: (e) => {
8859
- e.target.style.display = "none";
8860
- } }) }),
8861
- /* @__PURE__ */ jsxs(CompAssetStripInfo, { children: [
8862
- /* @__PURE__ */ jsxs(CompAssetStripName, { children: [
8863
- "Dobroyd ",
8864
- /* @__PURE__ */ jsx(CompAssetBadge, { children: "HERITAGE" })
8865
- ] }),
8866
- /* @__PURE__ */ jsx(CompAssetStripAddr, { children: "7 Bradleys Head Rd, Mosman" })
8867
- ] }),
8868
- /* @__PURE__ */ jsxs(CompAssetStripRight, { children: [
8869
- /* @__PURE__ */ jsx(CompAssetStripPrice, { children: "$27.96M" }),
8870
- /* @__PURE__ */ jsx(CompAssetStripGrowth, { style: { color: "#4ade80" }, children: "+617%" })
8871
- ] }),
8872
- /* @__PURE__ */ jsxs(CompAssetTooltip, { children: [
8873
- /* @__PURE__ */ jsx(CompAssetTooltipArrow, {}),
8874
- /* @__PURE__ */ jsx(CompAssetTooltipImg, { children: /* @__PURE__ */ jsx("img", { src: "/bradleys.jpg", alt: "Dobroyd", onError: (e) => {
8875
- e.target.style.display = "none";
8876
- } }) }),
8877
- /* @__PURE__ */ jsxs(CompAssetTooltipTitle, { children: [
8878
- "Dobroyd ",
8879
- /* @__PURE__ */ jsx(CompAssetBadge, { children: "HERITAGE" })
8880
- ] }),
8881
- /* @__PURE__ */ jsx(CompAssetTooltipAddr, { children: "7 Bradleys Head Rd, Mosman" }),
8882
- /* @__PURE__ */ jsxs(CompAssetTooltipStats, { children: [
8883
- /* @__PURE__ */ jsxs(CompAssetTooltipRow, { children: [
8884
- /* @__PURE__ */ jsx("span", { children: "Sale Price" }),
8885
- /* @__PURE__ */ jsx("span", { children: "$27.96M" })
8886
- ] }),
8887
- /* @__PURE__ */ jsxs(CompAssetTooltipRow, { children: [
8888
- /* @__PURE__ */ jsx("span", { children: "Land" }),
8889
- /* @__PURE__ */ jsx("span", { children: "2,592 sqm" })
8890
- ] }),
8891
- /* @__PURE__ */ jsxs(CompAssetTooltipRow, { children: [
8892
- /* @__PURE__ */ jsx("span", { children: "Era" }),
8893
- /* @__PURE__ */ jsx("span", { children: "c.1905" })
8894
- ] }),
8895
- /* @__PURE__ */ jsxs(CompAssetTooltipRow, { children: [
8896
- /* @__PURE__ */ jsx("span", { children: "Growth" }),
8897
- /* @__PURE__ */ jsx("span", { style: { color: "#4ade80" }, children: "+617%" })
8898
- ] })
8899
- ] })
8900
- ] })
8901
- ] })
8902
- ] })
8903
- ] })
8813
+ ] }, i)) })
8904
8814
  ] }),
8905
8815
  /* @__PURE__ */ jsxs(StatsColumn, { children: [
8906
8816
  /* @__PURE__ */ jsx(StatsColumnHeader, { children: "Asset Specification" }),
@@ -9020,47 +8930,6 @@ function PropertyOverview({
9020
8930
  ] })
9021
8931
  ] })
9022
8932
  ] }),
9023
- /* @__PURE__ */ jsxs(MapCompRow, { children: [
9024
- /* @__PURE__ */ jsx(MapCompLeft, { children: /* @__PURE__ */ jsx(
9025
- GalleryMapSection,
9026
- {
9027
- images: galleryImages.map((img) => ({ src: img.imageUrl, title: img.title, subtitle: img.subtitle })),
9028
- categories: galleryCategories,
9029
- propertyLocation: location,
9030
- videoUrl,
9031
- tokenName,
9032
- onPhotoClick: onPhotosClick,
9033
- hideGallery: true,
9034
- hideSuburb: true
9035
- }
9036
- ) }),
9037
- /* @__PURE__ */ jsxs(SuburbPanel, { children: [
9038
- /* @__PURE__ */ jsxs(SuburbPanelTitle, { children: [
9039
- "Suburb Profile (",
9040
- location.split(",")[0]?.trim() || location,
9041
- ")"
9042
- ] }),
9043
- /* @__PURE__ */ jsxs(SuburbPanelGrid, { children: [
9044
- /* @__PURE__ */ jsxs(SuburbPanelStat, { children: [
9045
- /* @__PURE__ */ jsx(SuburbPanelStatLabel, { children: "Median House Price" }),
9046
- /* @__PURE__ */ jsx(SuburbPanelStatValue, { children: "$5.5M" })
9047
- ] }),
9048
- /* @__PURE__ */ jsxs(SuburbPanelStat, { children: [
9049
- /* @__PURE__ */ jsx(SuburbPanelStatLabel, { children: "5yr Growth" }),
9050
- /* @__PURE__ */ jsx(SuburbPanelStatValue, { children: "+42%" })
9051
- ] }),
9052
- /* @__PURE__ */ jsxs(SuburbPanelStat, { children: [
9053
- /* @__PURE__ */ jsx(SuburbPanelStatLabel, { children: "Suburb Rank" }),
9054
- /* @__PURE__ */ jsx(SuburbPanelStatValue, { children: "Top 1%" })
9055
- ] }),
9056
- /* @__PURE__ */ jsxs(SuburbPanelStat, { children: [
9057
- /* @__PURE__ */ jsx(SuburbPanelStatLabel, { children: "Avg. Days on Market" }),
9058
- /* @__PURE__ */ jsx(SuburbPanelStatValue, { children: "28" })
9059
- ] })
9060
- ] }),
9061
- /* @__PURE__ */ jsx(SuburbPanelDesc, { children: "One of Sydney's most prestigious harbourside suburbs, consistently ranked among Australia's highest-value residential markets. Strong capital growth driven by limited supply, heritage conservation overlays, and international buyer demand." })
9062
- ] })
9063
- ] }),
9064
8933
  /* @__PURE__ */ jsxs(AssetBentoNarratives, { children: [
9065
8934
  /* @__PURE__ */ jsxs(NarrativeCard, { children: [
9066
8935
  /* @__PURE__ */ jsx(NarrativeIcon, { children: /* @__PURE__ */ jsx("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ jsx("path", { d: "M22 12h-4l-3 9L9 3l-3 9H2" }) }) }),
@@ -9091,21 +8960,11 @@ function PropertyOverview({
9091
8960
  /* @__PURE__ */ jsx(THLabel, { children: "Hours (AEST)" }),
9092
8961
  /* @__PURE__ */ jsx(THLabel, { children: "Days" })
9093
8962
  ] }),
9094
- /* @__PURE__ */ jsxs(TradingHoursRow, { children: [
8963
+ /* @__PURE__ */ jsxs(TradingHoursRow, { $last: true, children: [
9095
8964
  /* @__PURE__ */ jsx(THValue, { children: "Continuous Trading" }),
9096
8965
  /* @__PURE__ */ jsx(THValue, { children: "10:00 \u2013 16:00" }),
9097
8966
  /* @__PURE__ */ jsx(THValue, { children: "Mon \u2013 Fri" })
9098
8967
  ] }),
9099
- /* @__PURE__ */ jsxs(TradingHoursRow, { children: [
9100
- /* @__PURE__ */ jsx(THValue, { children: "After Hours" }),
9101
- /* @__PURE__ */ jsx(THValue, { children: "16:00 \u2013 20:00" }),
9102
- /* @__PURE__ */ jsx(THValue, { children: "Mon \u2013 Fri" })
9103
- ] }),
9104
- /* @__PURE__ */ jsxs(TradingHoursRow, { $last: true, children: [
9105
- /* @__PURE__ */ jsx(THValue, { children: "Pre-Market" }),
9106
- /* @__PURE__ */ jsx(THValue, { children: "07:00 \u2013 10:00" }),
9107
- /* @__PURE__ */ jsx(THValue, { children: "Mon \u2013 Fri" })
9108
- ] }),
9109
8968
  /* @__PURE__ */ jsx(TradingHoursNote, { children: "All times are Australian Eastern Standard Time (AEST/AEDT). Markets are closed on Australian public holidays." })
9110
8969
  ] })
9111
8970
  ] }),
@@ -9354,66 +9213,6 @@ var GallerySpecLeft = styled9.div`
9354
9213
  flex-direction: column;
9355
9214
  gap: 0.75rem;
9356
9215
  `;
9357
- var MapCompRow = styled9.div`
9358
- display: grid;
9359
- grid-template-columns: 1fr 380px;
9360
- gap: 0.75rem;
9361
- margin-top: 0.75rem;
9362
- align-items: stretch;
9363
- @media (max-width: 900px) { grid-template-columns: 1fr; }
9364
- `;
9365
- var MapCompLeft = styled9.div`
9366
- min-width: 0;
9367
- overflow: hidden;
9368
- `;
9369
- var SuburbPanel = styled9.div`
9370
- background: #111111;
9371
- border: 1px solid rgba(255,255,255,0.1);
9372
- border-radius: 12px;
9373
- padding: 1.25rem;
9374
- display: flex;
9375
- flex-direction: column;
9376
- gap: 0.75rem;
9377
- `;
9378
- var SuburbPanelTitle = styled9.div`
9379
- font-size: 0.65rem;
9380
- color: #D4AF37;
9381
- text-transform: uppercase;
9382
- letter-spacing: 0.12em;
9383
- font-weight: 600;
9384
- padding-bottom: 0.75rem;
9385
- border-bottom: 1px solid rgba(255,255,255,0.06);
9386
- `;
9387
- var SuburbPanelGrid = styled9.div`
9388
- display: grid;
9389
- grid-template-columns: 1fr 1fr;
9390
- gap: 0.5rem;
9391
- `;
9392
- var SuburbPanelStat = styled9.div`
9393
- background: rgba(255,255,255,0.03);
9394
- border-radius: 6px;
9395
- padding: 0.5rem 0.65rem;
9396
- border: 1px solid rgba(255,255,255,0.04);
9397
- `;
9398
- var SuburbPanelStatLabel = styled9.div`
9399
- font-size: 0.6rem;
9400
- color: rgba(255,255,255,0.4);
9401
- text-transform: uppercase;
9402
- letter-spacing: 0.06em;
9403
- margin-bottom: 0.2rem;
9404
- `;
9405
- var SuburbPanelStatValue = styled9.div`
9406
- font-size: 0.9rem;
9407
- font-weight: 600;
9408
- color: #fff;
9409
- font-variant-numeric: tabular-nums;
9410
- `;
9411
- var SuburbPanelDesc = styled9.p`
9412
- margin: 0;
9413
- font-size: 0.75rem;
9414
- color: rgba(255,255,255,0.45);
9415
- line-height: 1.5;
9416
- `;
9417
9216
  var AssetBentoNarratives = styled9.div`
9418
9217
  display: grid;
9419
9218
  grid-template-columns: repeat(3, 1fr);
@@ -9788,182 +9587,6 @@ var TimelineHoldPeriod = styled9.span`
9788
9587
  color: rgba(255,255,255,0.25);
9789
9588
  font-weight: 400;
9790
9589
  `;
9791
- var CompAssetsPanel = styled9.div`
9792
- background: #111111;
9793
- border: 1px solid rgba(255,255,255,0.1);
9794
- border-radius: 12px;
9795
- padding: 0.75rem 1rem;
9796
- display: flex;
9797
- flex-direction: column;
9798
- gap: 0.35rem;
9799
- `;
9800
- var CompAssetsGrid = styled9.div`
9801
- display: grid;
9802
- grid-template-columns: 1fr 1fr;
9803
- gap: 0.5rem;
9804
- @media (max-width: 768px) {
9805
- grid-template-columns: 1fr;
9806
- }
9807
- `;
9808
- var CompAssetStrip = styled9.div`
9809
- position: relative;
9810
- display: flex;
9811
- align-items: center;
9812
- gap: 0.75rem;
9813
- background: rgba(255,255,255,0.02);
9814
- border: 1px solid rgba(255,255,255,0.06);
9815
- border-radius: 10px;
9816
- padding: 0.6rem 1rem 0.6rem 0.6rem;
9817
- transition: border-color 0.2s, background 0.2s;
9818
- cursor: pointer;
9819
- &:hover {
9820
- border-color: rgba(212,175,55,0.3);
9821
- background: rgba(255,255,255,0.03);
9822
- }
9823
- &:hover > div:last-child {
9824
- display: block;
9825
- }
9826
- `;
9827
- var CompAssetStripImg = styled9.div`
9828
- width: 52px;
9829
- height: 52px;
9830
- border-radius: 8px;
9831
- overflow: hidden;
9832
- flex-shrink: 0;
9833
- background: rgba(255,255,255,0.05);
9834
- img {
9835
- width: 100%;
9836
- height: 100%;
9837
- object-fit: cover;
9838
- }
9839
- `;
9840
- var CompAssetStripInfo = styled9.div`
9841
- flex: 1;
9842
- min-width: 0;
9843
- display: flex;
9844
- flex-direction: column;
9845
- gap: 2px;
9846
- `;
9847
- var CompAssetStripName = styled9.div`
9848
- font-size: 0.9rem;
9849
- font-weight: 600;
9850
- color: #fff;
9851
- display: flex;
9852
- align-items: center;
9853
- gap: 0.4rem;
9854
- `;
9855
- var CompAssetStripAddr = styled9.div`
9856
- font-size: 0.72rem;
9857
- color: rgba(255,255,255,0.4);
9858
- `;
9859
- var CompAssetStripRight = styled9.div`
9860
- flex-shrink: 0;
9861
- text-align: right;
9862
- display: flex;
9863
- flex-direction: column;
9864
- align-items: flex-end;
9865
- gap: 2px;
9866
- `;
9867
- var CompAssetStripPrice = styled9.div`
9868
- font-size: 1rem;
9869
- font-weight: 700;
9870
- color: #fff;
9871
- font-variant-numeric: tabular-nums;
9872
- white-space: nowrap;
9873
- `;
9874
- var CompAssetStripGrowth = styled9.div`
9875
- font-size: 0.72rem;
9876
- font-weight: 500;
9877
- font-variant-numeric: tabular-nums;
9878
- `;
9879
- var CompAssetBadge = styled9.span`
9880
- font-size: 0.52rem;
9881
- font-weight: 600;
9882
- text-transform: uppercase;
9883
- letter-spacing: 0.06em;
9884
- color: #4ade80;
9885
- background: rgba(74,222,128,0.1);
9886
- border: 1px solid rgba(74,222,128,0.2);
9887
- padding: 1px 6px;
9888
- border-radius: 4px;
9889
- white-space: nowrap;
9890
- `;
9891
- var CompAssetTooltip = styled9.div`
9892
- display: none;
9893
- position: absolute;
9894
- bottom: calc(100% + 10px);
9895
- left: 50%;
9896
- transform: translateX(-50%);
9897
- width: 280px;
9898
- background: #1a1d24;
9899
- border: 1px solid rgba(255,255,255,0.1);
9900
- border-radius: 8px;
9901
- padding: 0.75rem;
9902
- z-index: 100;
9903
- box-shadow: 0 8px 24px rgba(0,0,0,0.5);
9904
- pointer-events: none;
9905
- `;
9906
- var CompAssetTooltipArrow = styled9.div`
9907
- position: absolute;
9908
- bottom: -5px;
9909
- left: 50%;
9910
- transform: translateX(-50%) rotate(45deg);
9911
- width: 8px;
9912
- height: 8px;
9913
- background: #1a1d24;
9914
- border-right: 1px solid rgba(255,255,255,0.1);
9915
- border-bottom: 1px solid rgba(255,255,255,0.1);
9916
- `;
9917
- var CompAssetTooltipImg = styled9.div`
9918
- width: 100%;
9919
- height: 120px;
9920
- border-radius: 6px;
9921
- overflow: hidden;
9922
- margin-bottom: 0.6rem;
9923
- background: rgba(255,255,255,0.03);
9924
- img {
9925
- width: 100%;
9926
- height: 100%;
9927
- object-fit: cover;
9928
- }
9929
- `;
9930
- var CompAssetTooltipTitle = styled9.div`
9931
- font-size: 0.8rem;
9932
- font-weight: 600;
9933
- color: #fff;
9934
- display: flex;
9935
- align-items: center;
9936
- gap: 0.4rem;
9937
- margin-bottom: 2px;
9938
- `;
9939
- var CompAssetTooltipAddr = styled9.div`
9940
- font-size: 0.65rem;
9941
- color: rgba(255,255,255,0.4);
9942
- margin-bottom: 0.5rem;
9943
- `;
9944
- var CompAssetTooltipStats = styled9.div`
9945
- display: flex;
9946
- flex-direction: column;
9947
- gap: 0;
9948
- `;
9949
- var CompAssetTooltipRow = styled9.div`
9950
- display: flex;
9951
- justify-content: space-between;
9952
- align-items: center;
9953
- padding: 0.3rem 0;
9954
- border-bottom: 1px solid rgba(255,255,255,0.04);
9955
- &:last-child { border-bottom: none; }
9956
- span:first-child {
9957
- font-size: 0.7rem;
9958
- color: rgba(255,255,255,0.4);
9959
- }
9960
- span:last-child {
9961
- font-size: 0.75rem;
9962
- font-weight: 500;
9963
- color: #fff;
9964
- font-variant-numeric: tabular-nums;
9965
- }
9966
- `;
9967
9590
  var FeaturesPanel = styled9.div`
9968
9591
  display: flex;
9969
9592
  flex-wrap: wrap;