@loafmarkets/ui 0.1.84 → 0.1.86

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
@@ -2664,7 +2664,7 @@ var PropertyTour = React5.forwardRef(
2664
2664
  }
2665
2665
  );
2666
2666
  PropertyTour.displayName = "PropertyTour";
2667
- var ITEMS_PER_PAGE = 4;
2667
+ var ITEMS_PER_PAGE = 5;
2668
2668
  var ensureAnimationsInjected = () => {
2669
2669
  if (typeof document === "undefined") return;
2670
2670
  if (document.getElementById("property-news-updates-animations")) return;
@@ -2912,10 +2912,10 @@ var PropertyNewsUpdates = React5.forwardRef(
2912
2912
  children: [
2913
2913
  /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
2914
2914
  /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "0.5rem" }, children: [
2915
- isHomeVariant && /* @__PURE__ */ jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", viewBox: "0 0 24 24", fill: "currentColor", style: { color: "var(--color-text, #fff)" }, children: /* @__PURE__ */ jsx("path", { d: "M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-5 14H4v-4h11v4zm0-5H4V9h11v4zm5 5h-4V9h4v9z" }) }),
2915
+ isHomeVariant && /* @__PURE__ */ jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor", style: { color: "var(--color-text, #fff)", flexShrink: 0, display: "block" }, children: /* @__PURE__ */ jsx("path", { d: "M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-5 14H4v-4h11v4zm0-5H4V9h11v4zm5 5h-4V9h4v9z" }) }),
2916
2916
  isPurchaseVariant && /* @__PURE__ */ jsx("span", { style: { display: "inline-block", width: "8px", height: "8px", borderRadius: "50%", backgroundColor: "#0ecb81", boxShadow: "0 0 8px rgba(14,203,129,0.8)", animation: "propertyNewsPulse 1.5s infinite" } }),
2917
2917
  /* @__PURE__ */ jsxs("div", { children: [
2918
- /* @__PURE__ */ jsx("p", { className: isHomeVariant ? "text-base font-semibold text-white" : "text-lg font-semibold text-white", children: resolvedHeading }),
2918
+ /* @__PURE__ */ jsx("p", { className: isHomeVariant ? "text-base font-semibold text-white" : "text-lg font-semibold text-white", style: { margin: 0 }, children: resolvedHeading }),
2919
2919
  subheading ? /* @__PURE__ */ jsx("p", { className: "text-sm text-white/60", children: subheading }) : null
2920
2920
  ] })
2921
2921
  ] }),
@@ -2930,7 +2930,7 @@ var PropertyNewsUpdates = React5.forwardRef(
2930
2930
  "LIVE"
2931
2931
  ] }) : null
2932
2932
  ] }),
2933
- isHomeVariant && /* @__PURE__ */ jsx("div", { style: { display: "flex", gap: 0, marginTop: "0.75rem", marginBottom: "0.25rem" }, children: ["all", "property", "market"].map((tab) => /* @__PURE__ */ jsx(
2933
+ isHomeVariant && /* @__PURE__ */ jsx("div", { style: { display: "flex", gap: "1.5rem", marginTop: "0.75rem", marginBottom: "0.5rem", borderBottom: "1px solid rgba(255, 255, 255, 0.08)", paddingBottom: "0.5rem" }, children: ["all", "property", "market"].map((tab) => /* @__PURE__ */ jsx(
2934
2934
  "button",
2935
2935
  {
2936
2936
  type: "button",
@@ -2939,7 +2939,8 @@ var PropertyNewsUpdates = React5.forwardRef(
2939
2939
  background: "transparent",
2940
2940
  border: "none",
2941
2941
  borderBottom: homeTab === tab ? "2px solid var(--color-accent, #f0b90b)" : "2px solid transparent",
2942
- padding: "0.5rem 0.75rem",
2942
+ padding: "0 0 0.5rem 0",
2943
+ marginBottom: "-1px",
2943
2944
  fontSize: "0.75rem",
2944
2945
  fontWeight: homeTab === tab ? 600 : 400,
2945
2946
  color: homeTab === tab ? "var(--color-text, #fff)" : "var(--color-text-secondary, #848e9c)",
@@ -2953,7 +2954,7 @@ var PropertyNewsUpdates = React5.forwardRef(
2953
2954
  /* @__PURE__ */ jsx(
2954
2955
  "div",
2955
2956
  {
2956
- className: "mt-4 flex flex-1 flex-col gap-3 overflow-hidden",
2957
+ className: cn("flex flex-1 flex-col overflow-hidden", isHomeVariant ? "mt-2 gap-0" : "mt-4 gap-3"),
2957
2958
  style: !isPurchaseVariant && !isHomeVariant ? { minHeight: `${ITEMS_PER_PAGE * 86}px` } : void 0,
2958
2959
  children: isPurchaseVariant ? purchaseItems.length > 0 ? purchaseItems.slice(0, 7).map((purchase, index) => {
2959
2960
  const maxAmount = 6e4;
@@ -2992,7 +2993,7 @@ var PropertyNewsUpdates = React5.forwardRef(
2992
2993
  style: {
2993
2994
  width: "100%",
2994
2995
  textAlign: "left",
2995
- background: "transparent",
2996
+ backgroundColor: "transparent",
2996
2997
  border: "none",
2997
2998
  cursor: "pointer",
2998
2999
  padding: "0.75rem 0",
@@ -3001,11 +3002,22 @@ var PropertyNewsUpdates = React5.forwardRef(
3001
3002
  justifyContent: "space-between",
3002
3003
  alignItems: "flex-start",
3003
3004
  gap: "0.5rem",
3004
- color: "inherit"
3005
+ color: "inherit",
3006
+ transition: "background-color 0.15s"
3007
+ },
3008
+ onMouseEnter: (e) => {
3009
+ e.currentTarget.style.backgroundColor = "rgba(255,255,255,0.04)";
3010
+ const title = e.currentTarget.querySelector("h3");
3011
+ if (title) title.style.color = "var(--color-accent, #E6C87E)";
3012
+ },
3013
+ onMouseLeave: (e) => {
3014
+ e.currentTarget.style.backgroundColor = "transparent";
3015
+ const title = e.currentTarget.querySelector("h3");
3016
+ if (title) title.style.color = "#f8f9fa";
3005
3017
  },
3006
3018
  children: [
3007
3019
  /* @__PURE__ */ jsxs("div", { style: { flex: 1 }, children: [
3008
- /* @__PURE__ */ jsx("h3", { style: { fontSize: "0.85rem", fontWeight: 400, marginBottom: "0.25rem", color: "#f8f9fa", lineHeight: 1.4 }, children: item.title }),
3020
+ /* @__PURE__ */ jsx("h3", { style: { fontSize: "0.85rem", fontWeight: 400, marginBottom: "0.25rem", color: "#f8f9fa", lineHeight: 1.4, transition: "color 0.15s" }, children: item.title }),
3009
3021
  /* @__PURE__ */ jsxs("div", { style: { display: "flex", gap: "0.5rem", alignItems: "center", flexWrap: "wrap" }, children: [
3010
3022
  /* @__PURE__ */ jsx("span", { style: { color: "#848e9c", fontSize: "0.7rem" }, children: typeof item.date === "string" ? item.date : formatDate(item.date) }),
3011
3023
  item.source && /* @__PURE__ */ jsx("span", { style: { padding: "0.1rem 0.4rem", borderRadius: "3px", fontSize: "0.62rem", fontWeight: 500, backgroundColor: "rgba(255,255,255,0.07)", color: "#848e9c", whiteSpace: "nowrap" }, children: item.source }),
@@ -3095,8 +3107,8 @@ var PropertyNewsUpdates = React5.forwardRef(
3095
3107
  type: "button",
3096
3108
  onClick: () => setHomePage((p) => Math.max(0, p - 1)),
3097
3109
  disabled: homePage === 0,
3098
- style: { background: "transparent", border: "1px solid rgba(255,255,255,0.15)", borderRadius: "999px", padding: "0.2rem 0.75rem", fontSize: "0.7rem", textTransform: "uppercase", letterSpacing: "0.15em", cursor: homePage === 0 ? "not-allowed" : "pointer", opacity: homePage === 0 ? 0.4 : 1, color: "rgba(255,255,255,0.6)" },
3099
- children: "Prev"
3110
+ style: { background: "transparent", border: "1px solid rgba(255,255,255,0.15)", borderRadius: "50%", width: "28px", height: "28px", display: "flex", alignItems: "center", justifyContent: "center", padding: 0, cursor: homePage === 0 ? "not-allowed" : "pointer", opacity: homePage === 0 ? 0.4 : 1, color: "rgba(255,255,255,0.6)" },
3111
+ children: /* @__PURE__ */ jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "14", height: "14", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx("path", { d: "M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z" }) })
3100
3112
  }
3101
3113
  ),
3102
3114
  /* @__PURE__ */ jsxs("span", { style: { fontSize: "0.7rem", color: "rgba(255,255,255,0.5)" }, children: [
@@ -3110,8 +3122,8 @@ var PropertyNewsUpdates = React5.forwardRef(
3110
3122
  type: "button",
3111
3123
  onClick: () => setHomePage((p) => Math.min(homeTotalPages - 1, p + 1)),
3112
3124
  disabled: homePage >= homeTotalPages - 1,
3113
- style: { background: "transparent", border: "1px solid rgba(255,255,255,0.15)", borderRadius: "999px", padding: "0.2rem 0.75rem", fontSize: "0.7rem", textTransform: "uppercase", letterSpacing: "0.15em", cursor: homePage >= homeTotalPages - 1 ? "not-allowed" : "pointer", opacity: homePage >= homeTotalPages - 1 ? 0.4 : 1, color: "rgba(255,255,255,0.6)" },
3114
- children: "Next"
3125
+ style: { background: "transparent", border: "1px solid rgba(255,255,255,0.15)", borderRadius: "50%", width: "28px", height: "28px", display: "flex", alignItems: "center", justifyContent: "center", padding: 0, cursor: homePage >= homeTotalPages - 1 ? "not-allowed" : "pointer", opacity: homePage >= homeTotalPages - 1 ? 0.4 : 1, color: "rgba(255,255,255,0.6)" },
3126
+ children: /* @__PURE__ */ jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "14", height: "14", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx("path", { d: "M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z" }) })
3115
3127
  }
3116
3128
  )
3117
3129
  ] }),
@@ -3122,8 +3134,9 @@ var PropertyNewsUpdates = React5.forwardRef(
3122
3134
  type: "button",
3123
3135
  onClick: () => setPage((p) => Math.max(0, p - 1)),
3124
3136
  disabled: page === 0,
3125
- className: cn("rounded-full border border-white/15 px-3 py-1 uppercase tracking-[0.2em]", page === 0 ? "opacity-40 cursor-not-allowed" : "hover:border-white/40"),
3126
- children: "Prev"
3137
+ className: cn("rounded-full border border-white/15 flex items-center justify-center", page === 0 ? "opacity-40 cursor-not-allowed" : "hover:border-white/40"),
3138
+ style: { width: "28px", height: "28px", padding: 0, background: "transparent", color: "rgba(255,255,255,0.6)" },
3139
+ children: /* @__PURE__ */ jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "14", height: "14", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx("path", { d: "M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z" }) })
3127
3140
  }
3128
3141
  ),
3129
3142
  /* @__PURE__ */ jsxs("span", { className: "font-medium text-white/70", children: [
@@ -3138,8 +3151,9 @@ var PropertyNewsUpdates = React5.forwardRef(
3138
3151
  type: "button",
3139
3152
  onClick: () => setPage((p) => Math.min(totalPages - 1, p + 1)),
3140
3153
  disabled: page >= totalPages - 1,
3141
- className: cn("rounded-full border border-white/15 px-3 py-1 uppercase tracking-[0.2em]", page >= totalPages - 1 ? "opacity-40 cursor-not-allowed" : "hover:border-white/40"),
3142
- children: "Next"
3154
+ className: cn("rounded-full border border-white/15 flex items-center justify-center", page >= totalPages - 1 ? "opacity-40 cursor-not-allowed" : "hover:border-white/40"),
3155
+ style: { width: "28px", height: "28px", padding: 0, background: "transparent", color: "rgba(255,255,255,0.6)" },
3156
+ children: /* @__PURE__ */ jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "14", height: "14", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx("path", { d: "M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z" }) })
3143
3157
  }
3144
3158
  )
3145
3159
  ] }),
@@ -5648,8 +5662,19 @@ var HeaderContainer = styled25.header`
5648
5662
  box-sizing: border-box;
5649
5663
 
5650
5664
  @media (max-width: 768px) {
5651
- padding: 0 1rem;
5652
- padding-top: max(env(safe-area-inset-top, 0px), var(--telegram-safe-top, 0px));
5665
+ top: 0.5rem;
5666
+ left: 0.75rem;
5667
+ right: 0.75rem;
5668
+ width: calc(100% - 1.5rem);
5669
+ height: 46px;
5670
+ min-height: 46px;
5671
+ padding: 0 0.75rem;
5672
+ border-radius: 12px;
5673
+ background-color: rgba(13, 17, 23, 0.92);
5674
+ backdrop-filter: blur(12px);
5675
+ border: 1px solid rgba(255, 255, 255, 0.08);
5676
+ border-bottom: 1px solid rgba(255, 255, 255, 0.08);
5677
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
5653
5678
  }
5654
5679
  `;
5655
5680
  var HeaderSpacer = styled25.div`
@@ -5657,6 +5682,10 @@ var HeaderSpacer = styled25.div`
5657
5682
  min-height: 56px;
5658
5683
  min-height: calc(56px + max(env(safe-area-inset-top, 0px), var(--telegram-safe-top, 0px)));
5659
5684
  flex-shrink: 0;
5685
+
5686
+ @media (max-width: 768px) {
5687
+ min-height: calc(46px + 0.5rem);
5688
+ }
5660
5689
  `;
5661
5690
  var Logo = styled25.div`
5662
5691
  display: flex;
@@ -9644,6 +9673,7 @@ function OfferingProgressCard({
9644
9673
  raisedAmount,
9645
9674
  targetAmount,
9646
9675
  isPrivateClient = false,
9676
+ variant = "default",
9647
9677
  style,
9648
9678
  className
9649
9679
  }) {
@@ -9675,6 +9705,108 @@ function OfferingProgressCard({
9675
9705
  const interval = setInterval(() => setCountdown(calculateCountdown()), 1e3);
9676
9706
  return () => clearInterval(interval);
9677
9707
  }, [opensAt]);
9708
+ if (variant === "compact") {
9709
+ return /* @__PURE__ */ jsxs(CompactContainer, { style, className, children: [
9710
+ /* @__PURE__ */ jsx(ProgressBarOuter, { children: /* @__PURE__ */ jsx(ProgressBarInner, { style: { width: `${Math.min(percentSold, 100)}%` } }) }),
9711
+ /* @__PURE__ */ jsxs(ProgressInfo, { children: [
9712
+ /* @__PURE__ */ jsxs(ProgressSubscribers, { children: [
9713
+ "Subscribers: ",
9714
+ subscriberCount.toLocaleString()
9715
+ ] }),
9716
+ /* @__PURE__ */ jsxs(ProgressAmounts, { children: [
9717
+ /* @__PURE__ */ jsx("span", { className: "raised", children: formatCurrency3(computedRaised) }),
9718
+ /* @__PURE__ */ jsxs("span", { className: "target", children: [
9719
+ " / ",
9720
+ formatCurrency3(computedTarget)
9721
+ ] })
9722
+ ] })
9723
+ ] })
9724
+ ] });
9725
+ }
9726
+ if (variant === "home") {
9727
+ const isPreLive = !ipoStarted && ipoStatus !== "CLOSED" && ipoStatus !== "CANCELLED";
9728
+ return /* @__PURE__ */ jsxs(Container, { style, className, children: [
9729
+ /* @__PURE__ */ jsxs(Header2, { children: [
9730
+ /* @__PURE__ */ jsxs("h3", { children: [
9731
+ /* @__PURE__ */ jsx(FaChartLine, {}),
9732
+ " Offering Progress"
9733
+ ] }),
9734
+ /* @__PURE__ */ jsx("div", { style: { display: "flex", alignItems: "center", gap: "0.4rem" }, children: ipoStarted ? /* @__PURE__ */ jsxs(StatusSpan, { $color: "#0ecb81", children: [
9735
+ /* @__PURE__ */ jsx(StatusDot, { $color: "#0ecb81", $pulse: true }),
9736
+ "LIVE"
9737
+ ] }) : /* @__PURE__ */ jsxs(StatusSpan, { $color: statusColor || "#D4AF37", children: [
9738
+ /* @__PURE__ */ jsx(StatusDot, { $color: statusColor || "#D4AF37" }),
9739
+ statusLabel || "Preparing"
9740
+ ] }) })
9741
+ ] }),
9742
+ isPreLive ? /* @__PURE__ */ jsxs(HomePreLiveRow, { children: [
9743
+ countdown ? /* @__PURE__ */ jsxs(HomeCountdownSide, { children: [
9744
+ /* @__PURE__ */ jsx(CountdownLabel, { children: "Opens In" }),
9745
+ /* @__PURE__ */ jsxs(CountdownDigits, { children: [
9746
+ /* @__PURE__ */ jsx(CountdownNumber, { children: String(countdown.days).padStart(2, "0") }),
9747
+ /* @__PURE__ */ jsx(CountdownUnitLabel, { children: "D" }),
9748
+ /* @__PURE__ */ jsx(CountdownSeparator, { children: ":" }),
9749
+ /* @__PURE__ */ jsx(CountdownNumber, { children: String(countdown.hours).padStart(2, "0") }),
9750
+ /* @__PURE__ */ jsx(CountdownUnitLabel, { children: "H" }),
9751
+ /* @__PURE__ */ jsx(CountdownSeparator, { children: ":" }),
9752
+ /* @__PURE__ */ jsx(CountdownNumber, { children: String(countdown.minutes).padStart(2, "0") }),
9753
+ /* @__PURE__ */ jsx(CountdownUnitLabel, { children: "M" }),
9754
+ /* @__PURE__ */ jsx(CountdownSeparator, { children: ":" }),
9755
+ /* @__PURE__ */ jsx(CountdownNumber, { children: String(countdown.seconds).padStart(2, "0") }),
9756
+ /* @__PURE__ */ jsx(CountdownUnitLabel, { children: "S" })
9757
+ ] })
9758
+ ] }) : /* @__PURE__ */ jsx(HomeCountdownSide, { children: /* @__PURE__ */ jsx(PreLiveStatus, { $statusColor: statusColor, children: "Sale Not Yet Open" }) }),
9759
+ /* @__PURE__ */ jsxs(HomeUnitsSide, { children: [
9760
+ /* @__PURE__ */ jsx(HomeUnitsLabel, { children: "Units Subscribed" }),
9761
+ /* @__PURE__ */ jsxs(HomeUnitsValue, { children: [
9762
+ /* @__PURE__ */ jsx(HomeSpinner, {}),
9763
+ /* @__PURE__ */ jsxs("span", { children: [
9764
+ " / ",
9765
+ supplyToSell.toLocaleString()
9766
+ ] })
9767
+ ] })
9768
+ ] })
9769
+ ] }) : /* @__PURE__ */ jsxs(LiveBody, { children: [
9770
+ /* @__PURE__ */ jsxs(LiveTopRow, { children: [
9771
+ /* @__PURE__ */ jsxs("div", { children: [
9772
+ /* @__PURE__ */ jsxs(LiveLabel, { children: [
9773
+ "Offering Subscribed ",
9774
+ /* @__PURE__ */ jsx("span", { children: "\u24D8" })
9775
+ ] }),
9776
+ /* @__PURE__ */ jsxs(LivePercent, { children: [
9777
+ percentSold.toFixed(1),
9778
+ "%",
9779
+ /* @__PURE__ */ jsx("span", { className: "arrow", children: "\u2191" })
9780
+ ] })
9781
+ ] }),
9782
+ /* @__PURE__ */ jsxs("div", { style: { textAlign: "right" }, children: [
9783
+ /* @__PURE__ */ jsx(LiveLabel, { children: "Units Subscribed" }),
9784
+ /* @__PURE__ */ jsxs(UnitsValue, { children: [
9785
+ /* @__PURE__ */ jsx("span", { children: totalSold.toLocaleString() }),
9786
+ /* @__PURE__ */ jsxs("small", { children: [
9787
+ "/ ",
9788
+ supplyToSell.toLocaleString()
9789
+ ] })
9790
+ ] })
9791
+ ] })
9792
+ ] }),
9793
+ /* @__PURE__ */ jsx(ProgressBarOuter, { children: /* @__PURE__ */ jsx(ProgressBarInner, { style: { width: `${Math.min(percentSold, 100)}%` } }) }),
9794
+ /* @__PURE__ */ jsxs(ProgressInfo, { children: [
9795
+ /* @__PURE__ */ jsxs(ProgressSubscribers, { children: [
9796
+ "Subscribers: ",
9797
+ subscriberCount.toLocaleString()
9798
+ ] }),
9799
+ /* @__PURE__ */ jsxs(ProgressAmounts, { children: [
9800
+ /* @__PURE__ */ jsx("span", { className: "raised", children: formatCurrency3(computedRaised) }),
9801
+ /* @__PURE__ */ jsxs("span", { className: "target", children: [
9802
+ " / ",
9803
+ formatCurrency3(computedTarget)
9804
+ ] })
9805
+ ] })
9806
+ ] })
9807
+ ] })
9808
+ ] });
9809
+ }
9678
9810
  return /* @__PURE__ */ jsxs(Container, { style, className, children: [
9679
9811
  /* @__PURE__ */ jsxs(Header2, { children: [
9680
9812
  /* @__PURE__ */ jsxs("h3", { children: [
@@ -9743,7 +9875,7 @@ function OfferingProgressCard({
9743
9875
  /* @__PURE__ */ jsx("span", { children: "\u24D8" })
9744
9876
  ] }),
9745
9877
  /* @__PURE__ */ jsxs(LivePercent, { children: [
9746
- percentSold < 0.1 && percentSold > 0 ? percentSold.toFixed(3) : percentSold.toFixed(1),
9878
+ percentSold.toFixed(1),
9747
9879
  "%",
9748
9880
  /* @__PURE__ */ jsx("span", { className: "arrow", children: "\u2191" })
9749
9881
  ] })
@@ -9976,6 +10108,59 @@ var ProgressAmounts = styled25.div`
9976
10108
  .raised { color: #D4AF37; }
9977
10109
  .target { color: rgba(255,255,255,0.3); }
9978
10110
  `;
10111
+ var CompactContainer = styled25.div`
10112
+ width: 100%;
10113
+ margin: 1.5rem 0;
10114
+ display: flex;
10115
+ flex-direction: column;
10116
+ gap: 0.5rem;
10117
+ `;
10118
+ var HomePreLiveRow = styled25.div`
10119
+ display: flex;
10120
+ align-items: center;
10121
+ justify-content: space-between;
10122
+ padding-top: 1rem;
10123
+ `;
10124
+ var HomeCountdownSide = styled25.div`
10125
+ display: flex;
10126
+ flex-direction: column;
10127
+ align-items: center;
10128
+ flex: 1;
10129
+ `;
10130
+ var HomeUnitsSide = styled25.div`
10131
+ text-align: center;
10132
+ flex-shrink: 0;
10133
+ `;
10134
+ var HomeUnitsLabel = styled25.div`
10135
+ font-size: 0.6rem;
10136
+ color: var(--color-text-secondary);
10137
+ text-transform: uppercase;
10138
+ letter-spacing: 0.1em;
10139
+ margin-bottom: 0.2rem;
10140
+ `;
10141
+ var HomeUnitsValue = styled25.div`
10142
+ font-size: 1.1rem;
10143
+ font-weight: 700;
10144
+ font-family: monospace;
10145
+ span {
10146
+ color: var(--color-text-secondary);
10147
+ font-weight: 400;
10148
+ }
10149
+ `;
10150
+ var HomeSpinner = styled25.span`
10151
+ display: inline-block;
10152
+ width: 14px;
10153
+ height: 14px;
10154
+ border: 2px solid rgba(255, 255, 255, 0.1);
10155
+ border-top-color: var(--color-accent, #f0b90b);
10156
+ border-radius: 50%;
10157
+ animation: homeSpin 1s linear infinite;
10158
+ vertical-align: middle;
10159
+ margin-right: 0.15rem;
10160
+ @keyframes homeSpin {
10161
+ to { transform: rotate(360deg); }
10162
+ }
10163
+ `;
9979
10164
  var MAX_DISPLAY_AMOUNT = 6e4;
9980
10165
  var formatCurrency4 = (amount) => {
9981
10166
  if (amount >= 1e6) return `$${(amount / 1e6).toFixed(2)}M`;
@@ -11653,7 +11838,7 @@ function PortfolioActivityPanel({
11653
11838
  formatTimestamp(trade.executedAt)
11654
11839
  ] })
11655
11840
  ] }),
11656
- trade.status === "SETTLEMENT_FAILED" ? /* @__PURE__ */ jsx(ActivityTag, { $color: "#f6465d", $bg: "rgba(246,70,93,0.12)", children: "Failed" }) : /* @__PURE__ */ jsx(
11841
+ /* @__PURE__ */ jsx(
11657
11842
  ActivityTag,
11658
11843
  {
11659
11844
  $color: trade.side === "SELL" ? "#f6465d" : "#0ecb81",
@@ -13732,7 +13917,7 @@ function PropertyValuation({
13732
13917
  /* @__PURE__ */ jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "0.5rem" }, children: [
13733
13918
  /* @__PURE__ */ jsxs(PricingModelDetail, { children: [
13734
13919
  /* @__PURE__ */ jsx(PropertyDetailLabel, { children: "Last Price" }),
13735
- /* @__PURE__ */ jsx(PricingDetailValue, { children: formatCompact(lastPrice) })
13920
+ /* @__PURE__ */ jsx(PricingDetailValue, { children: formatCurrency6(lastPrice) })
13736
13921
  ] }),
13737
13922
  /* @__PURE__ */ jsxs(PricingModelDetail, { children: [
13738
13923
  /* @__PURE__ */ jsxs("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center", width: "100%" }, children: [
@@ -13743,11 +13928,11 @@ function PropertyValuation({
13743
13928
  ] })
13744
13929
  ] }),
13745
13930
  /* @__PURE__ */ jsxs(PricingDetailValue, { style: { color: "var(--color-accent)", fontWeight: "bold" }, children: [
13746
- formatCompact(fairValue),
13931
+ formatCurrency6(fairValue),
13747
13932
  " ",
13748
13933
  /* @__PURE__ */ jsxs("span", { style: { fontSize: "0.85em", fontWeight: "normal", opacity: 0.8 }, children: [
13749
13934
  "(",
13750
- formatCompact(fairValue * tokensOutstanding),
13935
+ formatCurrency6(fairValue * tokensOutstanding, { maximumFractionDigits: 0 }),
13751
13936
  ")"
13752
13937
  ] })
13753
13938
  ] })
@@ -13764,7 +13949,7 @@ function PropertyValuation({
13764
13949
  /* @__PURE__ */ jsx(GaugeIndicator, { type: "fairValue", position: 50 }),
13765
13950
  /* @__PURE__ */ jsxs(GaugePriceTag, { position: gaugePosition, children: [
13766
13951
  /* @__PURE__ */ jsx("span", { children: "Last Price" }),
13767
- /* @__PURE__ */ jsx("span", { children: formatCompact(lastPrice) })
13952
+ /* @__PURE__ */ jsx("span", { children: formatCurrency6(lastPrice) })
13768
13953
  ] }),
13769
13954
  /* @__PURE__ */ jsx(GaugeIndicator, { type: "lastPrice", position: gaugePosition })
13770
13955
  ] }),
@@ -13772,36 +13957,36 @@ function PropertyValuation({
13772
13957
  /* @__PURE__ */ jsx(ValuationItem, { children: /* @__PURE__ */ jsxs(ValuationValue, { style: { color: "#4CAF50" }, children: [
13773
13958
  /* @__PURE__ */ jsxs("span", { children: [
13774
13959
  "< ",
13775
- formatCompact(undervaluedThreshold)
13960
+ formatCurrency6(undervaluedThreshold)
13776
13961
  ] }),
13777
13962
  /* @__PURE__ */ jsxs("span", { className: "valuation-amount-span", style: { fontSize: "0.8rem", fontWeight: "normal" }, children: [
13778
13963
  "(",
13779
- formatCompact(undervaluedThreshold * tokensOutstanding),
13964
+ formatMillions(undervaluedThreshold * tokensOutstanding),
13780
13965
  ")"
13781
13966
  ] })
13782
13967
  ] }) }),
13783
13968
  /* @__PURE__ */ jsx(ValuationItem, { children: /* @__PURE__ */ jsxs(ValuationValue, { style: { color: "var(--color-accent)" }, children: [
13784
- /* @__PURE__ */ jsx("span", { children: formatCompact(fairValue) }),
13969
+ /* @__PURE__ */ jsx("span", { children: formatCurrency6(fairValue) }),
13785
13970
  /* @__PURE__ */ jsxs("span", { className: "valuation-amount-span", style: { fontSize: "0.8rem", fontWeight: "normal" }, children: [
13786
13971
  "(",
13787
- formatCompact(fairValue * tokensOutstanding),
13972
+ formatMillions(fairValue * tokensOutstanding),
13788
13973
  ")"
13789
13974
  ] })
13790
13975
  ] }) }),
13791
13976
  /* @__PURE__ */ jsx(ValuationItem, { children: /* @__PURE__ */ jsxs(ValuationValue, { style: { color: "#F44336" }, children: [
13792
13977
  /* @__PURE__ */ jsxs("span", { children: [
13793
13978
  "> ",
13794
- formatCompact(overvaluedThreshold)
13979
+ formatCurrency6(overvaluedThreshold)
13795
13980
  ] }),
13796
13981
  /* @__PURE__ */ jsxs("span", { className: "valuation-amount-span", style: { fontSize: "0.8rem", fontWeight: "normal" }, children: [
13797
13982
  "(",
13798
- formatCompact(overvaluedThreshold * tokensOutstanding),
13983
+ formatMillions(overvaluedThreshold * tokensOutstanding),
13799
13984
  ")"
13800
13985
  ] })
13801
13986
  ] }) })
13802
13987
  ] })
13803
13988
  ] }),
13804
- /* @__PURE__ */ jsxs("div", { children: [
13989
+ /* @__PURE__ */ jsxs(HiddenMobileChart, { children: [
13805
13990
  /* @__PURE__ */ jsx("h3", { style: { marginBottom: "1rem", fontSize: "1.1rem", color: "#fff" }, children: "Historical Valuation" }),
13806
13991
  /* @__PURE__ */ jsx(ChartContainer, { children: /* @__PURE__ */ jsxs(ChartBackground, { children: [
13807
13992
  axisLabels.map((label, index) => /* @__PURE__ */ jsx(YAxisLabel, { style: { top: `${10 + index * 22}%` }, children: label }, `${label}-${index}`)),
@@ -13920,7 +14105,15 @@ function PropertyValuation({
13920
14105
  ] })
13921
14106
  ] }) })
13922
14107
  ] })
13923
- ] })
14108
+ ] }),
14109
+ /* @__PURE__ */ jsx("h3", { className: "desktop-only-historical-chart", style: { marginBottom: "1rem", fontSize: "1.1rem", color: "#fff" }, children: "Historical Valuation" }),
14110
+ /* @__PURE__ */ jsx(ChartContainer, { className: "desktop-only-historical-chart", children: /* @__PURE__ */ jsxs(ChartBackground, { children: [
14111
+ axisLabels.map((label, index) => /* @__PURE__ */ jsx(YAxisLabel, { style: { top: `${10 + index * 22}%` }, children: label }, `${label}-${index}`)),
14112
+ /* @__PURE__ */ jsxs(ValuationSvg, { viewBox: `0 0 ${CHART_WIDTH} ${CHART_HEIGHT}`, preserveAspectRatio: "none", children: [
14113
+ valuationPath ? /* @__PURE__ */ jsx("path", { d: valuationPath, fill: "none", stroke: "#D4AF37", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" }) : null,
14114
+ fairValuePath ? /* @__PURE__ */ jsx("path", { d: fairValuePath, fill: "none", stroke: "#FFFFFF", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" }) : null
14115
+ ] })
14116
+ ] }) })
13924
14117
  ] })
13925
14118
  ] }),
13926
14119
  /* @__PURE__ */ jsxs(RecentSalesSection, { children: [
@@ -13994,14 +14187,6 @@ function formatMillions(value) {
13994
14187
  }
13995
14188
  return `$${(value / 1e6).toFixed(2)}m`;
13996
14189
  }
13997
- function formatCompact(value) {
13998
- if (value == null || !Number.isFinite(value)) return "\u2014";
13999
- const abs = Math.abs(value);
14000
- if (abs >= 1e9) return `$${(value / 1e9).toFixed(2)}B`;
14001
- if (abs >= 1e6) return `$${(value / 1e6).toFixed(2)}M`;
14002
- if (abs >= 1e3) return `$${(value / 1e3).toFixed(1)}K`;
14003
- return formatCurrency6(value);
14004
- }
14005
14190
  function formatBedroomLabel(bedrooms) {
14006
14191
  if (!Number.isFinite(bedrooms)) return "\u2014";
14007
14192
  return `${bedrooms} Bed`;
@@ -14125,6 +14310,12 @@ var GaugePriceTag = styled25.div`
14125
14310
  color: var(--color-accent);
14126
14311
  }
14127
14312
  `;
14313
+ var HiddenMobileChart = styled25.div`
14314
+ display: none;
14315
+ @media (max-width: 480px) {
14316
+ display: block;
14317
+ }
14318
+ `;
14128
14319
  var ValuationWrapper = styled25.div`
14129
14320
  display: flex;
14130
14321
  flex-direction: column;
@@ -14176,10 +14367,9 @@ var PricingModelCard = styled25.div`
14176
14367
  var PricingModelHeader = styled25.div`
14177
14368
  display: flex;
14178
14369
  justify-content: space-between;
14179
- align-items: flex-start;
14370
+ align-items: center;
14180
14371
  margin-bottom: 1.5rem;
14181
14372
  gap: 1rem;
14182
- flex-wrap: wrap;
14183
14373
 
14184
14374
  .valuation-info {
14185
14375
  display: flex;
@@ -14187,7 +14377,6 @@ var PricingModelHeader = styled25.div`
14187
14377
  gap: 0.25rem;
14188
14378
  font-size: 0.85rem;
14189
14379
  color: rgba(255, 255, 255, 0.75);
14190
- flex-shrink: 0;
14191
14380
  }
14192
14381
  `;
14193
14382
  var PricingModelTitle = styled25.h3`
@@ -14254,31 +14443,15 @@ var ValuationDetails = styled25.div`
14254
14443
  display: flex;
14255
14444
  justify-content: space-between;
14256
14445
  margin-top: 1rem;
14257
- gap: 0.25rem;
14258
14446
  `;
14259
14447
  var ValuationItem = styled25.div`
14260
14448
  display: flex;
14261
14449
  flex-direction: column;
14262
- min-width: 0;
14263
- overflow: hidden;
14264
14450
  `;
14265
14451
  var ValuationValue = styled25.div`
14266
14452
  font-size: 1rem;
14267
14453
  font-weight: 600;
14268
14454
  color: #fff;
14269
- display: flex;
14270
- flex-direction: column;
14271
- gap: 2px;
14272
- overflow-wrap: break-word;
14273
- word-break: break-word;
14274
-
14275
- @media (max-width: 480px) {
14276
- font-size: 0.72rem;
14277
-
14278
- .valuation-amount-span {
14279
- display: none;
14280
- }
14281
- }
14282
14455
  `;
14283
14456
  var ChartContainer = styled25.div`
14284
14457
  width: 100%;